我们有一些使用OnMember GibraltarAsync方法的示例,但没有示例显示如何处理用户离开会话。我尝试重写OnMembersRemovedAsync,但似乎并未调用它(至少在使用bot框架仿真器时)。
我需要在用户离开/离开对话时进行一些清理。 一个例子或任何技巧将不胜感激。
更新:我正在使用C#和Bot框架v4
答案 0 :(得分:2)
这将是特定于频道的,因为它取决于频道的功能,该功能可在用户离开会话时发送更新。任何其他渠道,您都需要研究。
对于Facebook,我无法找到涵盖此类操作的范围。这些是可用范围,您可以更仔细地参考here:
Web Chat作为一项功能,也不包括此功能。但是,由于这是一个网页,因此可以利用onbeforeunload()
窗口函数来调度事件。事件侦听器将利用Web聊天的存储将消息或事件分发给机器人。为了清楚起见,我通过SEND_MESSAGE
和SEND_EVENT
发送不同类型的数据。
const store = window.WebChat.createStore( {}, ( { dispatch } ) => next => async action => {
return next( action );
};
window.addEventListener( 'sendEventActivity', ( { data } ) => {
store.dispatch({
type: 'WEB_CHAT/SEND_MESSAGE',
payload: {
text: data
}
} )
,
store.dispatch( {
type: 'WEB_CHAT/SEND_EVENT',
payload: {
name: 'user_event',
value: {
name: 'end_conversation',
value: 'user ended conversation'
},
text: 'The user has left the conversation.'
}
} )
} );
window.onbeforeunload = function() {
const eventSendActivity = new Event( 'sendEventActivity' );
eventSendActivity.data = 'User left conversation';
window.dispatchEvent( eventSendActivity );
}
{ type: 'message',
id: '4uPdpZhlTFfBMziBE7EmEI-f|0000004',
timestamp: 2020-01-10T18:21:26.767Z,
serviceUrl: 'https://directline.botframework.com/',
channelId: 'directline',
from: { id: 'dl_123', name: 'johndoe', role: 'user' },
conversation: { id: '4uPdpZhlTFfBMziBE7EmEI-f' },
recipient: { id: 'botberg@QaeuoeEamLg', name: 'Dungeon Runner' },
textFormat: 'plain',
locale: 'en-US',
text: 'User left conversation',
channelData:
{ clientActivityID: '15786804807910gegwkp2kai',
clientTimestamp: '2020-01-10T18:21:20.792Z' }
}
{ type: 'event',
id: '4uPdpZhlTFfBMziBE7EmEI-f|0000005',
timestamp: 2020-01-10T18:21:26.780Z,
serviceUrl: 'https://directline.botframework.com/',
channelId: 'directline',
from: { id: 'dl_123', name: 'johndoe', role: 'user' },
conversation: { id: '4uPdpZhlTFfBMziBE7EmEI-f' },
recipient: { id: 'botberg@QaeuoeEamLg', name: 'Dungeon Runner' },
locale: 'en-US',
channelData:
{ clientActivityID: '1578680480821h7kgfm9cyz',
clientTimestamp: '2020-01-10T18:21:20.821Z' },
value:
{ name: 'end_conversation', value: 'user ended conversation' },
name: 'user_event'
}
希望有帮助!