我想創建一個聊天機器人,爲了避免用戶打開聊天窗口並且不知道可用的選項,我想在用戶打開聊天窗口時給出一些基本的說明。是否有可能檢測用戶何時在Facebook上打開聊天窗口?
當用戶打開聊天窗口時是否有任何觸發器可用?也許我可以檢查一下,如果沒有正在進行的對話,我可以提供基本的說明。
我做了一些谷歌搜索,沒有發現任何關於此。是否有可能這樣做,如果沒有,是否有辦法緩解這個問題,並向用戶提供有關chatbot功能和支持指令的信息?
我想創建一個聊天機器人,爲了避免用戶打開聊天窗口並且不知道可用的選項,我想在用戶打開聊天窗口時給出一些基本的說明。是否有可能檢測用戶何時在Facebook上打開聊天窗口?
當用戶打開聊天窗口時是否有任何觸發器可用?也許我可以檢查一下,如果沒有正在進行的對話,我可以提供基本的說明。
我做了一些谷歌搜索,沒有發現任何關於此。是否有可能這樣做,如果沒有,是否有辦法緩解這個問題,並向用戶提供有關chatbot功能和支持指令的信息?
我覺得酸的答案不是。
但是,您可以攔截IConversationUpdateActivity類型的消息,以瞭解用戶是否已將該機器人添加到對話中。在C#項目模板中,您可以找到一個代碼塊來詢問這種消息類型,但什麼都不做。
您可以監視兩種事件類型: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;
}
Facebook並沒有讓機器人來啓動不同的Skype或談話其他平臺。 有一些技巧,你仍然可以做:
結果將是這樣的:
ConversationUpdate和ContactRelationUpdate當用戶打開Facebook的Messenger的對話不會被觸發。但是,這些工作在其他平臺上很好。 –
你可以按照這個方法:https://jsfiddle.net/tjepp6n1/ – Hackerman