首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Botframework Webchat的令牌生成

Botframework Webchat的令牌生成
EN

Stack Overflow用户
提问于 2019-02-06 03:24:42
回答 3查看 1.2K关注 0票数 3

我一直在将我的Direct Line Bot从Webchat v3迁移到v4。新版本要求使用令牌,而不是调用页面中的Direct Line secret。以下是用于启动机器人的代码(index.html):

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en-US">
<head>
    <title>Web Chat: Full-featured bundle</title>

    <script src="https://cdn.botframework.com/botframework-webchat/master/webchat.js"></script>

    <style>
         html, body {
            height: 100%
        }

         body {
            margin: 0
        }

         #webchat,
         #webchat > * {
             height: 100%;
             width: 100%;

        }


    </style>
</head>
<body>
       <div id="webchat" role="main"></div>

    <script>
    (async function () {
        const res = await fetch('https://bellamspt.azurewebsites.net/Forms/Webchat/directline/token', { method: 'POST' });

      const { token } = await res.json();

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

      document.querySelector('#webchat > *').focus();
    })().catch(err => console.error(err));
   </script>
</body>
</html>

问:我需要编写什么代码才能在https://bellamspt.azurewebsites.net/Forms/Webchat/directline/token调用的other中生成令牌??意识到它必须是像这样的

代码语言:javascript
复制
POST https://directline.botframework.com/v3/directline/tokens/generate
Authorization: Bearer SECRET

但我不知道它是否必须是php,js或其他类型的文件才能工作。

提前感谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-16 19:27:13

我用php解决了这个问题。你可以试一试。

代码语言:javascript
复制
<?php
$botSecret = '<your 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>
票数 1
EN

Stack Overflow用户

发布于 2019-07-30 16:47:08

我昨天遇到了同样的问题,我只是把它贴在这里,以防将来对任何人有帮助。如果你把你的代码改成这样,它应该可以工作:

代码语言:javascript
复制
    <!DOCTYPE html>
<html lang="en-US">
<head>
    <title>Web Chat: Full-featured bundle</title>

    <script src="https://cdn.botframework.com/botframework-webchat/master/webchat.js"></script>

    <style>
         html, body {
            height: 100%
        }

         body {
            margin: 0
        }

         #webchat,
         #webchat > * {
             height: 100%;
             width: 100%;

        }


    </style>
</head>
<body>
       <div id="webchat" role="main"></div>

    <script>
    (async function () {
        const res = await fetch('https://bellamspt.azurewebsites.net/Forms/Webchat/directline/token', 
{ method: 'POST', headers: { Authorization: 'write your direct line secret here' }});

      const { token } = await res.json();

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

      document.querySelector('#webchat > *').focus();
    })().catch(err => console.error(err));
   </script>
</body>
</html>

您必须在post请求的头中添加授权,才能在异步函数中生成令牌。不幸的是,从微软的documentation如何生成令牌来看,这一点可能并不明显

票数 1
EN

Stack Overflow用户

发布于 2019-02-06 08:02:28

您需要做的是使用您最熟悉的技术实现某种服务器端逻辑,该技术使用只保存在您的服务器上的秘密,通过向DirectLine通道发出一个HTTP请求来生成一个新的令牌。然后,在web页面的启动逻辑中,请求获取该令牌,并使用该令牌初始化web页面中的direct line实例。使用这种方法可以确保任何外部人员都不会掌握您的秘密。

因此,没有一种类型的文件可以“让它工作”。您将需要选择节点、PHP、ASP.NET或任何其他服务器技术,并以任何其他HTTP请求处理程序的方式实现它。

This article will help in understanding the authentication concepts and APIshere's a blog post that shows how you might do it with ASP.NET and Node

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

https://stackoverflow.com/questions/54541658

复制
相关文章

相似问题

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