我希望能夠給用戶稍微不同的迴應,具體取決於他們是否在Slack與Facebook Messenger或SMS上,但我不確定如何檢測用戶當前的消息平臺上。如何檢測MS Bot Framework正在響應哪個消息傳遞平臺?
這是可能的嗎?我似乎無法在文檔中找到任何此類示例。
我希望能夠給用戶稍微不同的迴應,具體取決於他們是否在Slack與Facebook Messenger或SMS上,但我不確定如何檢測用戶當前的消息平臺上。如何檢測MS Bot Framework正在響應哪個消息傳遞平臺?
這是可能的嗎?我似乎無法在文檔中找到任何此類示例。
我找到了答案,以我自己的問題,同時通過一些示例代碼的挖掘:
var isSkypeMessage = function (message) {
return message.source === 'skype';
};
你可以得到該消息是從session.message.source
未來的平臺。
值將是下列之一(從Channel.js source code拍攝):
exports.channels = {
facebook: 'facebook',
skype: 'skype',
telegram: 'telegram',
kik: 'kik',
email: 'email',
slack: 'slack',
groupme: 'groupme',
sms: 'sms',
emulator: 'emulator',
directline: 'directline',
console: 'console'
};
這是絕對有可能的 - 看到如何做到這一點在C#下面的示例:
private async Task MessageReceivedAsync(IDialogContext context, IAwaitable<object> result)
{
var activity = await result as Activity;
string msg = activity.Text;
//setting ChannelID
string channelID = activity.ChannelId;
switch (channelID)
{
case "skype":
case "emulator":
default:
break;
}
}
此處的文檔:https://docs.microsoft.com/en-us/bot-framework/resources-identifiers-guide#channel-id
屬性的大部分結果都非常明顯,「鬆弛」,「kik」等bu如果一場比賽沒有進行調試,看看它是什麼回報:)