首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过网络聊天解决令牌问题

如何通过网络聊天解决令牌问题
EN

Stack Overflow用户
提问于 2019-05-15 00:37:31
回答 2查看 593关注 0票数 1

用于生成直接行令牌的机器人框架api导致网络聊天不能处理的令牌。

最近,我注意到我的网站上的网络聊天不能再直接连接了。使用directline secret会导致网络聊天正常进行。使用bot框架api生成webchat无法处理的超长令牌(816个字符)(导致无法连接等消息)。这曾经工作得很好,但现在它坏了(据我所知,没有什么变化)

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

代码语言:javascript
复制
<?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来显示webchat客户端

代码语言: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>

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-01 02:23:36

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2019-05-21 15:07:46

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

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

https://stackoverflow.com/questions/56134944

复制
相关文章

相似问题

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