Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Botframework 是否可以检测用户何时打开Facebook上的聊天窗口?_Botframework_Chatbot_Facebook Chatbot - Fatal编程技术网

Botframework 是否可以检测用户何时打开Facebook上的聊天窗口?

Botframework 是否可以检测用户何时打开Facebook上的聊天窗口?,botframework,chatbot,facebook-chatbot,Botframework,Chatbot,Facebook Chatbot,我正在尝试创建一个聊天机器人,为了避免用户打开聊天窗口而不知道可用选项,我想在用户打开聊天窗口时给出一些基本说明 当用户打开聊天窗口时,是否有可用的触发器?也许我可以检查一下,如果没有正在进行的对话,我可以提供基本的指导 我在谷歌上搜索了一下,什么也没找到。有没有可能这样做?如果没有,有没有办法缓解这个问题,并向用户提供有关聊天机器人功能和支持说明的信息?我认为答案是否定的 但是您可以截取类型消息,以了解用户是否已将bot添加到对话中。在C#项目模板中,您可以找到一个代码块,该代码块请求此消息类

我正在尝试创建一个聊天机器人,为了避免用户打开聊天窗口而不知道可用选项,我想在用户打开聊天窗口时给出一些基本说明

当用户打开聊天窗口时,是否有可用的触发器?也许我可以检查一下,如果没有正在进行的对话,我可以提供基本的指导


我在谷歌上搜索了一下,什么也没找到。有没有可能这样做?如果没有,有没有办法缓解这个问题,并向用户提供有关聊天机器人功能和支持说明的信息?

我认为答案是否定的


但是您可以截取类型消息,以了解用户是否已将bot添加到对话中。在C#项目模板中,您可以找到一个代码块,该代码块请求此消息类型,但不执行任何操作。

您可以监视两种事件类型:ConversationUpdate和ContactRelationUpdate

第一个(ConversationUpdate)在添加用户或从会话中删除用户时调用。所以,有一个地方,你可以介绍可用的选项。这将是新对话开始的每种类型。因此,它可能会变得烦人,你可以添加一个检查-如果用户已经使用机器人一段时间,不要显示它

第二个(ContactRelationUpdate)在用户向联系人添加或从联系人中删除bot时调用。通常,每个用户操作只调用一次

以下是Bot框架示例的摘录:

对于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#


与Skype或其他平台不同,Facebook不允许机器人启动对话。 您仍然可以使用一些技巧:

  • 进入Facebook页面的设置,然后发送消息并选中“显示Messenger问候语”,如下图所示,然后写下问候语。
结果如下所示:

  • 您还可以设置“开始”按钮来触发事件。 这是文件: “”
您可以采用以下方法:
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;
}