4

ユーザーにウェルカム メッセージを表示するために、以下のコードを使用しました。

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.ConversationUpdate)
            {
                string replyMessage = string.Empty;
                replyMessage = Responses.Greeting;
                return message.CreateReply(replyMessage);
            }
            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
            }
            else if (message.Type == ActivityTypes.Ping)
            {
            }
            return null;
        }

以下のメソッドは、アクティビティ タイプがメッセージでない場合、HandleSystemMessage を呼び出すために使用されます。

public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
        {
            string reply = "";
            ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
            if (activity.Type == ActivityTypes.Message)
            {
                    stLuis = await LuisHelper.ParseUserInput(activity.Text);

                    string userResponse = activity.Text.ToLower();

                    switch (stLuis.topScoringIntent.intent)
                    {
                        case "Greetings":
                            reply = Responses.Greeting;
                            break; 

                        case "None":
                            reply = Responses.None;
                            break;

                        default:
                            break;
                    }
                }

                if (reply != "")
                    await connector.Conversations.ReplyToActivityAsync(activity.CreateReply(reply));
            }
            else
            {
                var reply1 = HandleSystemMessage(activity);
                if (reply1 != null)
                    await connector.Conversations.ReplyToActivityAsync(reply1);
            }
            var response = Request.CreateResponse(HttpStatusCode.OK); 
            return response;
        }

このコードは Skype で動作します。しかし、Microsoft チームに同じボットを追加すると、ウェルカム メッセージが表示されません。

4

1 に答える 1

2

現在 (2016-12-30) ボットを「連絡先リスト」に追加しても、MSFT Teams はメッセージをまったく送信しません。これは既知の制限であり、MSFT 関係者が言うように、近い将来に対処される予定です。

それまでの間、ボットへの ConversationUpdate メッセージを取得するために、ユーザーは最初にボットとの会話を開始する必要があります。

回避策として、ボットが十分にステートフルである場合は、"start" などのユーザーから送信された特別なテキスト、または最初の受信メッセージだけを処理できます。

于 2016-12-30T12:04:07.330 に答える