Android-IM給即時通訊添加一個自動聊天機器人

正常的思路是
服務端設置一個機器人,當有接收到消息的時候,自動回復一條消息。
比如大名鼎鼎的微軟小冰:

image.png

小冰會根據(jù)消息類型和語境回答最接近的消息,現(xiàn)在還能分析圖片,比如一個合照能識別大致年齡等。
當然這是高級智能化的結(jié)果。

自己在寫一個聊天項目的時候,也想到寫一個自動回復的機器人。
但是跟小冰比真是太low了,玩玩全全就是個機器。

image.png

其實在包含通訊類的項目中應用的還是比較多的。

比如在很多app需要通訊或者客服的功能。
當我們?nèi)ゴ蜷_對話窗口的時候,首先發(fā)送出去的消息會默認先去匹配相關的文章,解決方案。只有在我們選擇人工的時候才會給我們接入客服。
其實這樣一方面也解決的客服人員的工作壓力。

下面進入正題
由于自己技術能力有限,只能實現(xiàn)客戶端的邏輯。勉強也算實現(xiàn)了。
服務端使用的是極光的JMessage。

簡單實現(xiàn):
1、接收消息
需要在OnCreate初始化的時候注冊消息事件
JMessageClient.registerEventReceiver(this);
在onDestroy()結(jié)束的時候銷毀
JMessageClient.unRegisterEventReceiver(this);

然后重寫onEvent類(該類是極光開發(fā)提供的接收消息的方法)
MessageEvent是消息接收的類,可以判斷消息類型,比如在這里就沒有做判斷。所有類型的消息都是默認以text的方式回復。

JMessageClient.getMyInfo().getUserName()=="1006"
這里就是設置機器人的編號了?;蛘哒f算是用戶名吧,系統(tǒng)根據(jù)這個判斷是否是機器人。

然后使用
JMessageClient.createSingleTextMessage(msg.getTargetID(), "", "[自動回復]你好,我是機器人");
創(chuàng)建一條消息,需要三個參數(shù)(目標ID,appKey,內(nèi)容)
目標ID是根據(jù)接收到消息,獲取發(fā)送者的id,
appKey可以用于不同app之間的通訊。
內(nèi)容是我們回復的內(nèi)容。

使用JMessageClient.sendMessage(message1);發(fā)送就行了

如果需要監(jiān)聽消息發(fā)送結(jié)果的回調(diào),使用setOnSendCompleteCallback

   /*接收消息*/
    public void onEvent(final MessageEvent event) {
        final Message msg = event.getMessage();
        getActivity().runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (JMessageClient.getMyInfo().getUserName()=="1006"|| JMessageClient.getMyInfo().getUserName().equals("1006")) {
                    final Message message1 = JMessageClient.createSingleTextMessage(msg.getTargetID(), "", "[自動回復]你好,我是機器人");
                    message1.setOnSendCompleteCallback(new BasicCallback() {
                        @Override
                        public void gotResult(int i, String s) {
                            if (i == 0) {
                                Log.e("Log:自動回復:", s + "");
                            } else {
                            }
                        }
                    });
                    JMessageClient.sendMessage(message1);
                }
                adapter.clear();
                initDataBean();

            }
        });

    }

如果需要設置高級的回復功能
需要在接收到消息后先判斷消息的類型,或者監(jiān)聽收到消息的文字,本地做識別處理之后再自動發(fā)送回去。

當然如果想把機器人的回復設置的更加生動,可以手動去設置一些隨機的回復。看起來至少沒那么干。

當然如果你想避免某人的打擾,也可以設置對此人采用自動回復,
只要在接收消息里判斷發(fā)送方的id就可以了。

目前的實現(xiàn)是為了方便觀看效果,所以有一定的局限性,比如當離線的時候是無法發(fā)送消息的?;蛘咄顺鯽pp也不行。


項目地址:https://github.com/wapchief/Android-IM

相關閱讀推薦:

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容