html - 在Microsoft Bot Framework中,如何从聊天的url中提取参数?

标签 html node.js botframework

我编写了一个 html 页面,用户在其中登录(数据文件为 json),我可以保存他/她的名字和性别。我将它们作为参数传递到机器人所在的请求 URL 中。

   var xhr = new XMLHttpRequest();

    function processRequest(e) {
      var url;
      if (xhr.readyState == 4  && xhr.status == 200) {
        var response = JSON.parse(xhr.responseText);

        url = "https://webchat.botframework.com/embed/nodejsbot98?firstname="+firstname+"&gender="+gender+"&t="+response;
        document.getElementById("chat").src= url;
      }
    }

现在在 app.js 中,我希望机器人用名字来问候该用户,并根据性别确定机器人是男性还是女性。 url如何调用app.js来发送和接收消息?如何从 url 访问这些参数?

编辑:使用反向 channel ,该脚本正确吗?

    <!DOCTYPE html>
<html>
  <head>
    <link href="https://cdn.botframework.com/botframework-webchat/latest/botchat.css" rel="stylesheet" />
    <script src="https://cdn.botframework.com/botframework-webchat/latest/botchat.js"></script>

  </head>
  <body>
    <div id="bot"/>
        <script>
      var botConnection = new BotChat.DirectLine({
        secret: 'TGDGNQY7JK0.cwA.XiQ.I1LDLE5qI3Jsx6q7dlnMMrJtEoLcbTdOE-QIZ4AA_1Y',
      });

var user = {
  id:  'userid',
  name: 'username'
};

var bot = {
  id:  'botid',
  name: 'botname'
};

BotChat.App({
  botConnection: botConnection,
  user: user,
  bot: bot,
}, document.getElementById("bot"));

botConnection
                    .postActivity({type: "event", value: "", from: {id: "me" }, name: "greeting", data:{firstname:'Alain', gender:'male'}})
                    .subscribe(id => console.log("success"));    
   </script>
  </body>
</html>

最佳答案

根据您的要求,最好利用 The Backchannel botframework-webchat 库的功能,因为 Bot 服务的嵌入网络聊天很难从 url 传递值。

利用网络聊天 js 库,您可以设置如下值:

botConnection .postActivity({ type: "event", from: user, name: "customeEvt", data:{fitstname:'Gary',gender:'Male'} }) .subscribe(activity => console.log(activity));

在机器人应用程序中,您可以通过事件触发器检索变量:

bot.on('event',(event) => {
  if (event.name === 'customeEvt') {
      console.log(event)// use the data as **event.data** as you set the variable as 'data'
      bot.beginDialog(event.address, '<any dialog>', event.data);//pass your value to dialog
  }
})

关于html - 在Microsoft Bot Framework中,如何从聊天的url中提取参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50987616/

相关文章:

azure - 如何将 Bot Framework Composer 与 Azure 应用程序配置连接以从那里读取值

jquery - 如何提取以前的标签文本

javascript - 使用 JQuery 几秒后隐藏消息

node.js - 将 lambda zip 上传到 s3 时,压缩方法重要吗?

javascript - 在运行nodejs的服务器上调用new Date()时,日期返回服务器启动时的日期

javascript - 使用 NodeJS 将开始和停止时间发布到 mysql(sequelize)

node.js - 将主动消息发送到团队中的 channel

node.js - 如何从自托管自定义 Microsoft Teams 机器人获取消息?

javascript - jQuery 自动完成选择触发事件

javascript - 用于 winstore 应用程序的 JQuery-UI 选项卡