聊天机器人在本地机器人框架模拟器中可以正常接收欢迎消息,但不能在 azure 聊天机器人中使用
chatbot is working for welcome message fine in local bot framework Emulator, but not work in azure chatbot
我使用 c# 在 Asp.net 核心中创建了一个聊天机器人,当用户第一次打开聊天机器人时,我遇到了有关欢迎消息的问题。当我使用 Microsoft bot 框架模拟器时它工作正常。但是当我在 azure bot 选项中创建 bot 服务时,它不是通过欢迎消息。但是,是的,当您键入任何内容并按下发送按钮后,它会显示一条欢迎消息。意思是,azure bot 收到任何消息然后它响应但我想在用户打开聊天机器人面板时首先显示我的欢迎消息。知道其中的解决方案是什么吗?
我使用了这段代码,它在本地 bot 框架模拟器中运行良好,但在 azure bot 中却不行。
namespace Microsoft.BotBuilderSamples
{
public class DialogAndWelcomeBot<T> : DialogBot<T> where T : Dialog
{
public DialogAndWelcomeBot(ConversationState conversationState, UserState userState, T dialog, ILogger<DialogBot<T>> logger)
: base(conversationState, userState, dialog, logger)
{
}
protected override async Task OnMembersAddedAsync(
IList<ChannelAccount> membersAdded,
ITurnContext<IConversationUpdateActivity> turnContext,
CancellationToken cancellationToken)
{
foreach (var member in membersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
var replyOne = MessageFactory.Text($"Hi there! I'm bot. ");
await turnContext.SendActivityAsync(replyOne, cancellationToken);
var replyTwo = MessageFactory.Text($"How may i assist you?");
await turnContext.SendActivityAsync(replyTwo, cancellationToken);
}
}
}
}
}
你可以参考这个代码。它会帮助你。
IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity;
if (iConversationUpdated != null)
{
ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl));
foreach (var member in iConversationUpdated.MembersAdded ?? System.Array.Empty<ChannelAccount>())
{
// if the bot is added, then
if (member.Id == iConversationUpdated.Recipient.Id)
{
var reply = ((Activity)iConversationUpdated).CreateReply(
$"Hello Bot");
connector.Conversations.ReplyToActivityAsync(reply);
}
}
}
我使用 c# 在 Asp.net 核心中创建了一个聊天机器人,当用户第一次打开聊天机器人时,我遇到了有关欢迎消息的问题。当我使用 Microsoft bot 框架模拟器时它工作正常。但是当我在 azure bot 选项中创建 bot 服务时,它不是通过欢迎消息。但是,是的,当您键入任何内容并按下发送按钮后,它会显示一条欢迎消息。意思是,azure bot 收到任何消息然后它响应但我想在用户打开聊天机器人面板时首先显示我的欢迎消息。知道其中的解决方案是什么吗?
我使用了这段代码,它在本地 bot 框架模拟器中运行良好,但在 azure bot 中却不行。
namespace Microsoft.BotBuilderSamples
{
public class DialogAndWelcomeBot<T> : DialogBot<T> where T : Dialog
{
public DialogAndWelcomeBot(ConversationState conversationState, UserState userState, T dialog, ILogger<DialogBot<T>> logger)
: base(conversationState, userState, dialog, logger)
{
}
protected override async Task OnMembersAddedAsync(
IList<ChannelAccount> membersAdded,
ITurnContext<IConversationUpdateActivity> turnContext,
CancellationToken cancellationToken)
{
foreach (var member in membersAdded)
{
if (member.Id != turnContext.Activity.Recipient.Id)
{
var replyOne = MessageFactory.Text($"Hi there! I'm bot. ");
await turnContext.SendActivityAsync(replyOne, cancellationToken);
var replyTwo = MessageFactory.Text($"How may i assist you?");
await turnContext.SendActivityAsync(replyTwo, cancellationToken);
}
}
}
}
}
你可以参考这个代码。它会帮助你。
IConversationUpdateActivity iConversationUpdated = message as IConversationUpdateActivity;
if (iConversationUpdated != null)
{
ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl));
foreach (var member in iConversationUpdated.MembersAdded ?? System.Array.Empty<ChannelAccount>())
{
// if the bot is added, then
if (member.Id == iConversationUpdated.Recipient.Id)
{
var reply = ((Activity)iConversationUpdated).CreateReply(
$"Hello Bot");
connector.Conversations.ReplyToActivityAsync(reply);
}
}
}