2017-02-20 76 views
1

我想創建一個聊天機器人,爲了避免用戶打開聊天窗口並且不知道可用的選項,我想在用戶打開聊天窗口時給出一些基本的說明。是否有可能檢測用戶何時在Facebook上打開聊天窗口?

當用戶打開聊天窗口時是否有任何觸發器可用?也許我可以檢查一下,如果沒有正在進行的對話,我可以提供基本的說明。

我做了一些谷歌搜索,沒有發現任何關於此。是否有可能這樣做,如果沒有,是否有辦法緩解這個問題,並向用戶提供有關chatbot功能和支持指令的信息?

+0

你可以按照這個方法:https://jsfiddle.net/tjepp6n1/ – Hackerman

回答

2

我覺得酸的答案不是。

但是,您可以攔截IConversationUpdateActivity類型的消息,以瞭解用戶是否已將該機器人添加到對話中。在C#項目模板中,您可以找到一個代碼塊來詢問這種消息類型,但什麼都不做。

3

您可以監視兩種事件類型:ConversationUpdate和ContactRelationUpdate。

當用戶被添加或從對話中刪除時,第一個(ConversationUpdate)被調用。所以,有一個地方可以介紹可用選項。這將是新對話開始的每種類型。所以,它可能會變得令人討厭,你可以添加一個支票 - 如果用戶已經使用了一段時間,不要顯示它。

第二個(ContactRelationUpdate)是在用戶向聯繫人添加或刪除機器人時調用的。通常,每個用戶操作只調用一次。

下面是來自殭屍框架例子提取物:

於Node.js

bot.on('conversationUpdate', function (message) { 
    // Check for group conversations 
    if (message.address.conversation.isGroup) { 
     // Send a hello message when bot is added 
     if (message.membersAdded) { 
      message.membersAdded.forEach(function (identity) { 
       if (identity.id === message.address.bot.id) { 
        var reply = new builder.Message() 
          .address(message.address) 
          .text("Hello everyone!"); 
        bot.send(reply); 
       } 
      }); 
     } 

     // Send a goodbye message when bot is removed 
     if (message.membersRemoved) { 
      message.membersRemoved.forEach(function (identity) { 
       if (identity.id === message.address.bot.id) { 
        var reply = new builder.Message() 
         .address(message.address) 
         .text("Goodbye"); 
        bot.send(reply); 
       } 
      }); 
     } 
    } 
}); 

bot.on('contactRelationUpdate', function (message) { 
    if (message.action === 'add') { 
     var name = message.user ? message.user.name : null; 
     var reply = new builder.Message() 
       .address(message.address) 
       .text("Hello %s... Thanks for adding me. Say 'hello' to see some great demos.", name || 'there'); 
     bot.send(reply); 
    } else { 
     // delete their data 
    } 
}); 

對於C#

private void HandleMessage(Activity message) 
{ 
    if (message.Type == ActivityTypes.ConversationUpdate) 
    { 
       if (activity.MembersAdded.Any(m => m.Id == activity.Recipient.Id)) 
       { 
        var connector = new ConnectorClient(new Uri(activity.ServiceUrl)); 

        var response = activity.CreateReply(); 
        response.Text = "Hi! I am Bot. Here's what you can do..."; 

        await connector.Conversations.ReplyToActivityAsync(response); 
       } 
    } 
    else if (message.Type == ActivityTypes.ContactRelationUpdate) 
    { 
     if (Activity.AsContactRelationUpdateActivity().Action ==    ContactRelationUpdateActionTypes.Add) 
     { 
        var connector = new ConnectorClient(new Uri(activity.ServiceUrl)); 

        var response = activity.CreateReply(); 
        response.Text = "Hi! I am Bot. Thanks for adding me. Here's what you can do..."; 

     } 
    } 
    return null; 
} 
5

Facebook並沒有讓機器人來啓動不同的Skype或談話其他平臺。 有一些技巧,你仍然可以做:

  • 去你的Facebook頁面,然後設置,然後消息並勾選「顯示使者問候語」,如下圖,並寫出你的問候語。 enter image description here

結果將是這樣的:

enter image description here

+0

ConversationUpdate和ContactRelationUpdate當用戶打開Facebook的Messenger的對話不會被觸發。但是,這些工作在其他平臺上很好。 –

相關問題