在探索botframeworkv4C# 中的新预览时,我遇到了一个案例,我需要对某个频道执行特定操作。在 中botframeworkv3,我曾经使用过访问所有频道字符串名称,ChannelIds但在这里找不到。
"facebook"例如,我知道我可以直接编写,但是使用提供的列表可以防止任何拼写错误并提高可读性。
因此,ChannelIdsin的等价物是botframeworkv4什么?
频道列表Channels在 Microsoft.Bot.Connector 命名空间中的对象中可用:
ChannelId 仍然是 v4 中 Activity 对象中的现有属性,请参阅来源:
/// <summary>
/// Channel this activity is associated with
/// </summary>
string ChannelId { get; set; }
Run Code Online (Sandbox Code Playgroud)
channelId 值列表在 v4 中仍然可用Microsoft.Bot.Builder.Classic:
public sealed class ChannelIds
{
public const string Facebook = "facebook";
public const string Skype = "skype";
public const string Msteams = "msteams";
public const string Telegram = "telegram";
public const string Kik = "kik";
public const string Email = "email";
public const string Slack = "slack";
public const string Groupme = "groupme";
public const string Sms = "sms";
public const string Emulator = "emulator";
public const string Directline = "directline";
public const string Webchat = "webchat";
public const string Console = "console";
public const string Cortana = "cortana";
}
Run Code Online (Sandbox Code Playgroud)
旁注:您可以简单地添加自己的列表:
public enum ChannelEnum
{
emulator,
facebook,
skype,
webchat,
directline
// ...
}
Run Code Online (Sandbox Code Playgroud)
并使用 activity.ChannelId == ChannelEnum.webchat.ToString()
ChannelIds已Channels在 C# V4 SDK 中替换为 ,可在Microsoft.Bot.Connector.
检查特定频道可以轻松完成,例如:
var isEmail = turnContext.Activity.ChannelId == Channels.Email;
Run Code Online (Sandbox Code Playgroud)
如果您需要将自定义渠道(或例如 Android、iOS)添加到列表中,请使用 Nicholas R 的答案。