如何从Bot Framework Emulator V4发送特定的用户ID?

时间:2019-10-08 11:36:44

标签: botframework

我需要从机器人模拟器(https://github.com/microsoft/BotFramework-Emulator)发送特定的用户ID。我使用此文本框(请参见下图)

enter image description here

但是什么也没发送。活动中绝对有另一个向导。From.Id。

是否可以从模拟器发送带有特定用户ID的消息?

1 个答案:

答案 0 :(得分:0)

简单的答案是,如果您使用Direct Line从机密生成令牌并在其中指定用户ID(请参阅附件代码),那么Emulator应该优先使用那个值而不是您使用的任何值通过仿真器设置传递。

在我的个人测试中,“用户ID”设置似乎覆盖了任何其他先前存在的值。

但是请注意,如果您在设置中指定了用户ID值,则需要关闭选项卡式对话,然后通过重新输入消息传递终结点和AppId / AppPassword(或重新连接到)重新开始。 bot文件(如果使用)。只需按“重新启动对话”,就不会使模拟器获得用户ID设置。

希望有帮助!

// Listen for incoming requests.
server.post('/directline/token', (req, res) => {
  // userId must start with `dl_` for Direct Line enhanced authentication
  const userId = (req.body && req.body.id) ? req.body.id : `dl_${ Date.now() + Math.random().toString(36) }`;
  const options = {
    method: 'POST',
    uri: 'https://directline.botframework.com/v3/directline/tokens/generate',
    headers: {
      'Authorization': `Bearer ${ process.env.directLineSecret }`
    },
    json: {
      user: {
        Id: `${ userId }`
      }
    }
  };
  request.post(options, (error, response, body) => {
    if (!error && response.statusCode < 300) {
      res.send(body);
      console.log('Someone requested a token...');
    } else {
      res.status(500).send('Call to retrieve token from DirectLine failed');
    }
  });
});

enter image description here

enter image description here