首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何自动将用户信息传递给Bot会话实例,而不将其作为聊天窗口中的显式消息发布?

如何自动将用户信息传递给Bot会话实例,而不将其作为聊天窗口中的显式消息发布?
EN

Stack Overflow用户
提问于 2016-06-14 06:30:00
回答 3查看 4.4K关注 0票数 1

有关Microsoft框架的问题

有关于我的bot需要的用户的某些信息,但是我不希望用户自己提交它,因为

  1. 他可能没有。2.我的网页绝对有,所以我不应该问。

本质上,我的聊天机器人是嵌入在一个网页。该网页的每个会话中都有我需要提交给相应的聊天机器人控制器实例的信息,而不需要在聊天窗口中显示一个显式消息。

如何将信息传递给聊天机器人控制器?如果我需要对话Id来处理机器人,我如何在我的网页Javascripts中以编程的方式获得它?现在,我的聊天机器人已经与简单的iframe行集成到web页面中,可以在docs中找到它。

http://docs.botframework.com/connector/embed-chat-control/#navtitle

示例场景:我的聊天机器人是facebook页面上的聊天窗口。我需要聊天机器人知道用户是谁,例如,在没有提示的情况下说'Hello username‘

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-14 15:31:42

在这种情况下,您必须创建自己的会话窗口,允许您发布并获取消息对象。

Index.html

代码语言:javascript
复制
<script src="script.js">
<ul class="chat" id="conversation">

</ul>
<input id="input-text" type="text" />
<button type="button"   id="btn-send">Send</button>

script.js

代码语言:javascript
复制
$('#btn-send').click(function () {

    // Convert text to Message object
    var message = {
        text: $('#input-text').val(),
        type: "Message"
    };

    // Create outgoing message html and add to list
    var htmlOutgoing = "<li>" + message.text + "</li>";
    $('#conversation').append(html);

    $.ajax({
        url: 'api/Messages/Post', // Change to your proper url
        dataType: "json",
        type: "POST",
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(message),
        async: true,
        processData: false,
        cache: false,
        success: function (data) {
            // Create incoming message html and add to list
            var htmlIncoming = "<li>" + data.text + "</li>";
            $('#conversation').append(htmlIncoming);
        },
        error: function (xhr) {
            alert('error');
        }
    });

    $('#text-input').val("");
})

希望这能帮到你。

票数 1
EN

Stack Overflow用户

发布于 2019-06-14 22:10:11

我能够将用户ID和名称从web应用程序传递给嵌入在iframe中的C#。用户ID和名称可以像这样在iframe中传递(替换您的bot的URL和机密,以及您想传递的任何用户ID和名称:

代码语言:javascript
复制
<iframe src="https://webchat.botframework.com/embed/assistant-bot?s=[bot_secret]&userid=[user_id]&username=[user_name]"></iframe>`

在我的bot中,转身上下文用于访问用户ID和名称,并且在类OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)中的方法中可用,在类DialogBot.cs中在OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)中可用,在类QnABot.cs中在OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)中可用。

在这些方法中,turnContext.Activity.From.Id包含传入的用户ID,turnContext.Activity.From.Name包含传入的用户名。

我认为,如果您在下面发送给我的来自DirectLine的安全WebChat控制代码片段中嵌入了bot,那么机器人还应该能够以与上面相同的方式访问用户ID和用户名,但我还没有机会尝试它:

代码语言:javascript
复制
$.get('/api/token', function (token) {
    window.WebChat.renderWebChat({
        directLine: window.WebChat.createDirectLine({ token: token }),
        userID: '[user_id]',
        username: '[user_name]',
        locale: 'en-us',
        styleOptions: { hideUploadButton: true }
    }, document.getElementById('webchat'));
}
票数 1
EN

Stack Overflow用户

发布于 2016-06-14 11:37:05

Microsoft使用Message类在Bot和用户之间交换消息。它有着不同的特性。有一些是由框架填充的,并取决于框架。然而,很少有允许您控制会话状态的方法。

BotUserDataBotConversationDataBotPerUserInConversationData允许您交换动态数据。三个都有各自的意义。查看正式文件以获取详细信息。

若要获取有关不同频道的信息,请使用包含来自该频道(Facebook)的原始消息的ChannelData

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37804506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档