单击菜单项机器人框架向机器人发送消息

IT技术 javascript node.js reactjs botframework
2021-05-11 14:38:28

我在单击 Microsoft boframework 网络聊天中的静态菜单项时遇到了向机器人发送消息的挑战。我修改了顶部导航并具有静态菜单项,单击任何菜单项后,文本应作为消息发送给机器人。

图片

我通读了 Microsoft 文档,发现我们需要发布到直线,以便向机器人发送消息。请参考https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-direct-line-3-0-send-activity?view=azure-bot-服务-4.​​0

我想知道除此之外是否还有其他选择,因为我无法正确制作 api 并在单击项目时调用。

MenuItemClick(event) {
console.log(event.target.innerText);
Needle('post','https://directline.botframework.com/v3/directline/conversations', headers, {});
}

我期望单击菜单项时,与菜单项关联的文本应该作为消息发送到机器人。

1个回答

我假设您是在Minimizable Web Chat示例之上构建的我建议不要向 Direct Line 发出 post 请求以发送消息,而是建议sendMessage从 Web Chat 的商店分派一个操作。大多数逻辑已经为您准备好了。您只需sendAction要从 Web Chat Core导入方法并定义一个handleMenuItemClick函数。看看下面的代码片段。

最小化网络聊天示例

...
// Import `sendMessage` actiion from Web Chat Core
import sendMessage from 'botframework-webchat-core/lib/actions/sendMessage';

...

export default class extends React.Component {
  constructor(props) {
    super(props);
    ...
    // bind `handleMenuItemClick` to component
    this.handleMenuItemClick = this.handleMenuItemClick.bind(this);
    ...
  }

  // add `handleMenuItemClick` to component
  handleMenuItemClick({ target: { innerText }}) {
    const { store: { dispatch }} = this.state;
    dispatch(sendMessage(innerText));
  }

  render() {
    const { state: {
      minimized,
      newMessage,
      side,
      store,
      styleSet,
      token
    } } = this;

    return (
      <div className="minimizable-web-chat">
         ...
      </div>
  }
}

屏幕截图

在此处输入图片说明

希望这可以帮助!