2017-02-23 7 views
2

私はBOTのイントロを提供しようとしています。ユーザーが会話/連絡先リストに追加されたとき。 ActivityTypes.ConversationUpdateメッセージタイプを処理してみました。それはスカイプでは機能しません。すべてのチャンネルで動作するはずの共通の方法があります。ボットが会話/連絡先リストに追加されたことを確認する方法はありますか?

これは私が使用するコードです:事前に

public async Task<HttpResponseMessage> Post([FromBody]Activity activity) 
    { 
     ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl)); 
     if (activity.Type == ActivityTypes.Message) 
     { 

      // calculate something for us to return 
      int length = (activity.Text ?? string.Empty).Length; 

      // return our reply to the user 
      Activity reply = activity.CreateReply($"You sent {activity.Text} which was {length} characters"); 
      await connector.Conversations.ReplyToActivityAsync(reply); 
     } 
     else if(activity.Type == ActivityTypes.ConversationUpdate) 
     { 
      StateClient stateClient = activity.GetStateClient(); 
      BotData userData = await stateClient.BotState.GetUserDataAsync(activity.ChannelId, activity.From.Id); 

      if (!userData.GetProperty<bool>("SentGreeting")) 
      { 
       Activity reply = activity.CreateReply($"Hi " + activity.From.Name + ", I'm the Microsoft Bot"); 
       userData.SetProperty<bool>("SentGreeting", true); 
       await stateClient.BotState.SetUserDataAsync(activity.ChannelId, activity.From.Id, userData); 
       await connector.Conversations.ReplyToActivityAsync(reply); 
      } 
     } 
     var response = Request.CreateResponse(HttpStatusCode.OK); 
     return response; 
    } 

works here 感謝。

+0

私はあなたの問題を助けることはできませんが、あなたがそれをやろうとする方法についてもう少し精緻化すれば他のものかもしれません – gismo

+0

@gismoは今コードを追加しました。これはエミュレータとWebチャットで動作します。スカイプでは動作しません。助言がありますか? –

+0

ConversationUpdateイベントを受け取りますか? – Phito

答えて

2

SkypeチャンネルはConversationUpdateメッセージを送信しません。 Bot Framework EmulatorWebChatのような他のチャンネルがあります。 Skypeチャネルでユーザーからメッセージを受信する前に、ユーザーにメッセージを送信する方法はありません。

関連する問題