【问题标题】:How to fix token issue with webchat如何解决网络聊天的令牌问题
【发布时间】:2019-05-14 16:37:31
【问题描述】:

用于生成直达令牌的 bot 框架 api 导致 webchat 无法处理令牌。

最近我注意到我网站上的网络聊天不再能够建立直接连接。使用直连密码会产生有效的网络聊天。使用 bot 框架 api 生成一个非常长的令牌(816 个字符),网络聊天无法处理(导致无法连接的消息。这曾经工作得很好,但现在它坏了(据我所知,没有任何改变)

我使用一些 PHP 调用 api 并获取令牌:

<?php
    $botSecret = 'DIRECLINE SECRET';
    $response = wp_remote_get( 'https://webchat.botframework.com/api/tokens',    array( 'headers' => 'Authorization: BotConnector ' . $botSecret ) );
if( is_array($response) ) {
  $header = $response['headers'];
  $token = $response['body'];
}
?>
<script type="text/javascript">
           var webChatToken = <?php echo $token; ?>;
       </script>

和 Html\Javascript 显示网络聊天客户端

<html>
<body>
<div id="webchat" role="main"></div>   
    <script src="https://cdn.botframework.com/botframework-webchat/latest/webchat.js"></script>
    <script>  
       const store = window.WebChat.createStore({}, ({ dispatch }) => next => action => {
         if (action.type === 'DIRECT_LINE/CONNECT_FULFILLED') {
           dispatch({
             type: 'WEB_CHAT/SEND_EVENT',
             payload: {
               name: 'webchat/join',
               value: { language: window.navigator.language }
             }
           });
         }
         return next(action);
       });
        window.WebChat.renderWebChat({
        directLine: window.WebChat.createDirectLine({ token: webChatToken }),
        store,
        styleOptions: {
        },
        userID: 'N/A',
        username: 'Web Chat User',
        locale: 'nl-NL'
      }, document.getElementById('webchat'));
    </script>
  </body>
</html>

我希望有一个更短的令牌或至少一个可用于使用网络聊天的令牌

【问题讨论】:

  • 您还在遇到这个问题吗?您能否提供有关该错误的更多信息?网络聊天连接失败时看到的错误代码是什么?
  • 恐怕我是。错误是(从荷兰语翻译)“无法建立连接”我现在正在使用一种解决方法,即使用直接线路密码进行连接
  • 我没有看到您的代码有任何明显的问题,并且我能够从您在上面使用的端点请求一个令牌以连接到我的机器人。我建议您查看Generating a DirectLine Token 并尝试一下。
  • 威尔科。 Tnx 提供帮助
  • 我阅读了文档并尝试了替代实现。没有让它工作。您的令牌长度是多少(我得到 816 个字符的令牌),您是否通过 webchat client? 成功连接到您的机器人谢谢

标签: php botframework token


【解决方案1】:

BotFramework 开发团队刚刚部署了一个更新,允许您将 DirectLine 密码与 Web 聊天端点一起使用,因此您现在可以使用 DirectLine 或 WebChat 密码将 Web 聊天连接到您的机器人。

const res = await fetch('https://webchat.botframework.com/api/tokens', {
    method: 'GET', 
    headers: { 
        Authorization: 'BotConnector <WEB_CHAT_SECRET | DIRECT_LINE_SECRET>'
    } 
});

const token = await res.json();

window.WebChat.renderWebChat({
    directLine: window.WebChat.createDirectLine({ token })
}, document.getElementById('webchat'));

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    在 webchatclient 中使用 directline secret 会导致长度大于 800(长度不同)的长令牌,并且 403 错误会在客户端中转换为 Unable to Connect 消息。 X。尽管创建连接的方法称为“createDirectLine”,但网络聊天客户端仍然需要网络聊天机密。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多