在单击Microsoft boframework网络聊天中的静态菜单项时,我很难向bot发送消息。我已经修改了顶部导航,并具有静态菜单项,并且在单击任何菜单项时,都应将文本作为消息发送到bot。
我阅读了Microsoft文档,发现我们需要发布直接行,以便将消息发送给bot。请参阅https://docs.microsoft.com/en-us/azure/bot-service/rest-api/bot-framework-rest-direct-line-3-0-send-activity?view=azure-bot-service-4.0
我想知道除此之外是否还有其他选择,因为我无法正确制作api并在单击项目时调用。
MenuItemClick(event) {
console.log(event.target.innerText);
Needle('post','https://directline.botframework.com/v3/directline/conversations', headers, {});
}
我希望在单击菜单项时,与菜单项关联的文本应作为消息传递给机器人。
答案 0 :(得分:2)
我假设您是在Minimizable Web Chat示例的基础上构建的。建议您不要向Direct Line发送消息以发送消息,而建议从Web Chat的商店中调度sendMessage
操作。大多数逻辑已经为您服务。您只需要从Web Chat Core导入sendAction
方法并定义一个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>
}
}
屏幕截图
希望这会有所帮助!