私はMicrosoft Bot Frameworkを使用してチャットボットを開発しており、最近フレームワーク3.0を3.5にアップグレードしました。アップグレードする前にうまくいきましたが、今すぐユーザーがボットにメッセージを送信すると、ようこそメッセージが表示されます。しかし、ユーザーがそれに応答すると、ボットはウェルカムメッセージを再度送信します。これをどうすれば解決できますか?
ユーザーがボットにメッセージを送信すると、ウェルカムメッセージが届きます。しかし、ユーザーがそれに応答すると、ボットはウェルカムメッセージを再度送信します。 これを修正するにはどうすればよいですか?ここにコードがあります。
private Activity HandleSystemMessage(Activity message)
{
if (message.Type == ActivityTypes.DeleteUserData)
{
// Implement user deletion here
// If we handle user deletion, return a real message
}
else if (message.Type == ActivityTypes.ContactRelationUpdate)
{
// Handle conversation state changes, like members being added and removed
// Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info
// Not available in all channels
}
else if (message.Type == ActivityTypes.ConversationUpdate)
{
// Handle conversation state changes, like members being added and removed
// Use Activity.MembersAdded and Activity.MembersRemoved and Activity.Action for info
// Not available in all channels
logger.Debug("Activity Type " + message.Type);
logger.Debug("Inside conversation update and activity Id is :-"+ message.Id);
ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl));
Activity reply = message.CreateReply(ConstantsTable.WelcomeMessage);
connector.Conversations.ReplyToActivityAsync(reply);
message.Type = ActivityTypes.Message;
}
else if (message.Type == ActivityTypes.ContactRelationUpdate)
{
// Handle add/remove from contact lists
// Activity.From + Activity.Action represent what happened
}
else if (message.Type == ActivityTypes.Typing)
{
// Handle knowing tha the user is typing
ConnectorClient connector = new ConnectorClient(new System.Uri(message.ServiceUrl));
Activity reply = message.CreateReply("You are typing");
connector.Conversations.ReplyToActivityAsync(reply);
}
else if (message.Type == ActivityTypes.Ping)
{
ConnectorClient connector = new ConnectorClient(new Uri(message.ServiceUrl));
Activity reply = message.CreateReply("Hello PING. Please reply");
connector.Conversations.ReplyToActivityAsync(reply);
}
return message;
}
しかしローカルエミュレータでは、これだけが公開されている間は問題ありません。 助けてください。
? –
私はそれを公開したウェブチャットのリンクです。 – Sandy
@ Sandyユーザーがページを再読み込みするたびに、特にWebchatのボットフレームワークでは、 'ConversationUpdate'アクティビティを起動します。だから毎回、彼は同じような歓迎メッセージを得るでしょう。 Channel Id'activity.ChannelId'とUserID 'activity.From.Id'を使用して、ユーザーの状態値に基づいて処理できます。 –