在直接线框架内联中获取会话ID

时间:2018-01-24 11:56:48

标签: botframework direct-line-botframework web-chat

我正在使用directline进行网络聊天。

我想在聊天的顶部添加一个刷新按钮,为此我需要会话ID。我怎样才能获得身份证?是否可以使用内联网聊? This the refresh button that I am trying to implement

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,因为我想将会话ID传递给我的自定义控制器进行初始身份验证,相应地,将自定义身份验证数据推送到与特定会话ID相关的僵尸框架的会话堆栈。

我的狩猎让我在Github发帖this

inmarktech 的第3篇文章中,他提到了以下代码:

var params = BotChat.queryParams(location.search);
var my_token = params['my_token'];

var botConnection = new BotChat.DirectLine({
    secret: 'DIRECTLINE_SECRET'
});

BotChat.App({
    botConnection: botConnection
    ,user: { id: 'USER_ID', name: 'User' }  // user.id auto updates after first user message
}, document.getElementById("bot"));

botConnection.connectionStatus$.subscribe(function (status) {
    if (status == 2) {  // wait for connection is 'OnLine' to send data to bot
        var convID = botConnection.conversationId;
        botConnection.postActivity({
            from: { id: convID }  // because first time user ID == conversation ID
            ,type: 'event'
            ,name: 'registerUserData'    // event name as we need
            ,value: my_token   // data attached to event
        }).subscribe(function (activityId) {
            // This subscription is a MUST
            // If I remove this handler the postActivity not reaches the bot
        });
    }
});

您可以看到他正在订阅 botConnection.connectionStatus $ ,当状态属性等于2(在线)时,您可以获取对话ID来自botConnection对象。

希望有所帮助:)