2017-11-20 4 views
2

봇은 사용자로부터 답변을받지 않고 순으로 웹 채널의 백도어 이벤트를 사용하여 여러 질문을 생성합니다. 다음 두 질문에 대한 예 :어떻게 답장을 받았는지 로봇이 응답을 받았는지 인식

//Question 1 
var reply = ((Activity)activity).CreateReply("Question 1"); 
reply.Type = ActivityTypes.Message; 
reply.TextFormat = TextFormatTypes.Plain; 

reply.SuggestedActions = new SuggestedActions() 
{ 
     Actions = new List<CardAction>() 
        { 
         new CardAction() {Title = "Ans 1", Type = ActionTypes.ImBack, Value = "Ans 1"}, 
         new CardAction() {Title = "Ans 2", Type = ActionTypes.ImBack, Value = "Ans 2"} 
        } 
       }; 
await connectorClient.Conversations.ReplyToActivityAsync(reply); 


//Question 2 after 10 sec 
var reply = ((Activity)activity).CreateReply("Question 2"); 
reply.Type = ActivityTypes.Message; 
reply.TextFormat = TextFormatTypes.Plain; 

reply.SuggestedActions = new SuggestedActions() 
{ 
     Actions = new List<CardAction>() 
        { 
         new CardAction() {Title = "Ans 1", Type = ActionTypes.ImBack, Value = "Ans 1"}, 
         new CardAction() {Title = "Ans 2", Type = ActionTypes.ImBack, Value = "Ans 2"} 
        } 
       }; 
await connectorClient.Conversations.ReplyToActivityAsync(reply); 

질문 1 또는 질문 2에서 사용자가 어떤 질문에 답변했는지 활동 활동을 수신하여 어떻게 인식합니까?

+1

당신은 아마 각 CardAction에 대해 고유 한 값을 제공해야 볼 수 없습니다 ActionTypes.PostBack 오히려 그런 식으로 ActionTypes.ImBack보다 사용하는 것이 좋습니다. 사용자는 제목 만 표시해야합니까? –

답변

6

이 솔루션은 매우 간단하므로 수행해야 할 일은 Value 매개 변수를 고유하게 만드는 것입니다. 코드에서는 아래 코드 조각처럼 보일 것입니다. 또한 사용자가 실제로 Value

var connectorClient = new ConnectorClient(new Uri(activity.ServiceUrl)); 
       var reply = ((Activity)activity).CreateReply("Question 1"); 
       reply.Type = ActivityTypes.Message; 
       reply.TextFormat = TextFormatTypes.Plain; 

       reply.SuggestedActions = new SuggestedActions() 
       { 
        Actions = new List<CardAction>() 
        { 
         new CardAction() {Title = "Ans 1", Type = ActionTypes.PostBack, Value = "question 1 Ans 1"}, 
         new CardAction() {Title = "Ans 2", Type = ActionTypes.PostBack, Value = "question 1 Ans 2"} 
        } 
       }; 
       await connectorClient.Conversations.ReplyToActivityAsync(reply); 


       //Question 2 after 10 sec 
       reply = ((Activity)activity).CreateReply("Question 2"); 
       reply.Type = ActivityTypes.Message; 
       reply.TextFormat = TextFormatTypes.Plain; 

       reply.SuggestedActions = new SuggestedActions() 
       { 
        Actions = new List<CardAction>() 
        { 
         new CardAction() {Title = "Ans 1", Type = ActionTypes.PostBack, Value = "question 2 Ans 1"}, 
         new CardAction() {Title = "Ans 2", Type = ActionTypes.PostBack, Value = "question 2 Ans 2"} 
        } 
       }; 
       await connectorClient.Conversations.ReplyToActivityAsync(reply);