如何解决如何在 Bot Framework Composer 中获取机器人网络应用 URL?
我在 Azure 上发布了一个机器人。这个机器人通过网络聊天频道放置在一些网站上。我想要的是能够识别网站网址。
例如,如果我的机器人正在与名为 www.test.com 的网站上的某个人交谈,我需要我的机器人告诉此人“您好!您正在 www.test.com 与我交谈” .
我能得到的最接近的是使用 turn.activity.serviceUrl,但它一直给我“https://webchat.botframework.com/”。有什么办法可以让我获得实际的网址吗?
同样,我正在使用 Bot Framework Composer,所以我非常感谢任何专门针对 Bot Framework Composer 的帮助。
我知道这个话题 Get URL of web page from Bot Framework ,但是它没有回答我的问题 - 在 Bot Framework Composer 中解决这个问题
解决方法
这可以通过使用网络聊天的 store
和 Composer 中的事件活动触发器轻松实现。
首先,在网络聊天中,创建网络聊天的 store
实例并过滤 DIRECT_LINE/CONNECT_FULFILLED
操作类型。在那里,发送一个包含站点位置主机名的事件。然后,确保将 store
作为 ReactWebChat
组件中的属性传递。
其次,在 Composer 中,单击主对话框的省略号 ('...') 并添加触发器。从第一个下拉菜单中选择“活动”,然后从第二个下拉菜单中选择“收到的事件(事件活动)”。添加后,单击接收到的事件触发器并添加“发送响应”。最后,点击进入新创建的操作并添加 ${turn.activity.value}
以捕获并向用户显示该值。
注意:我使用的是网络聊天的 React 风格,但普通版本也能正常工作。
在网络聊天中:
const { createStore,ReactWebChat } = window.WebChat;
const store = window.WebChat.createStore( {},( { dispatch } ) => next => async action => {
if ( action.type === 'DIRECT_LINE/INCOMING_ACTIVITY' ) {
console.log( 'ACTIVITY ',action.payload.activity );
}
if ( action.type === 'DIRECT_LINE/CONNECT_FULFILLED' ) {
dispatch( {
type: 'WEB_CHAT/SEND_EVENT',payload: {
name: 'SEND_HOSTNAME',value: `Hello! You are on ${ window.location.hostname } talking to me.`,}
} )
}
next( action );
} );
window.ReactDOM.render(
<ReactWebChat
directLine={directLine}
store={store}
/>,document.getElementById( 'webchat' )
);
希望得到帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。