2017-03-22 7 views
2

誰かがボットに接続するたびにウェルカムメッセージを表示します。ボットフレームワークエミュレータではうまく動作しますが、SkypeやFacebook Messengerでは動作しないgithub(https://github.com/Microsoft/BotBuilder-Samples/tree/master/CSharp/demo-ContosoFlowers)のデモContosoFlowersサンプルのテクニックを使用しました。具体的には、MessageController.HandleSystemMessageでこのコードはトリガーされません:Microsoftボットフレームワークを使用してボットからウェルカムメッセージを表示する方法

 else if (message.Type == ActivityTypes.ConversationUpdate) 
     { 
      if (message.MembersAdded.Any(o => o.Id == message.Recipient.Id)) 
      { 
       var reply = message.CreateReply(Resources.RootDialog_Welcome_Message); 

       ConnectorClient connector = new ConnectorClient(new Uri(message.ServiceUrl)); 

       await connector.Conversations.ReplyToActivityAsync(reply); 
      } 
     } 

誰もがこれを正しく行う方法を知っていますか?

答えて

4

今日もContosoFlowersデモを試しました。エミュレータでは、ConversationUpdateコードが起動されますが、Skypeではこれが実行されません。しかし、私はSkypeでContactRelationUpdateアクティビティタイプが起動していることに気付きました(私はFacebook Messengerを試していません)。あなたの目標は、誰かがあなたのボットに「接続されている」いつでもウェルカムメッセージを表示する場合は、次のようにContactRelationUpdate活動タイプを使用して試みることができる:

else if (message.Type == ActivityTypes.ContactRelationUpdate) 
{ 
    if(message.Action == "add") 
    { 
     var reply = message.CreateReply("WELCOME!!!"); 
     ConnectorClient connector = new ConnectorClient(new Uri(message.ServiceUrl)); 
     await connector.Conversations.ReplyToActivityAsync(reply); 
    } 
} 
+0

これをテストしたところ、Skypeで予想される動作が得られました。 Facebookのメッセンジャー私はまだ不確かです。私はこれが良いと私たちは変更を実装していることに同意しますが、新しい連絡先が追加されたときだけでなく、新しい会話が開始されたときにウェルカムメッセージを送信したいと思います。私は調査を続けます。ヘルプありがとうEric –

+0

"WELCOME UserName !!!"を表示したいメッセージ。この状態で 'message.From.Name'が利用できない理由は何ですか?ユーザーからの最初のメッセージを送信した後に利用可能ですが、私は挨拶メッセージとしてそれを必要とします... – SmartDev

0

はFBのコールバックURLを、クラスを作成し、あなたにこれを持っています。 FacebookProfileは、呼び出し後に名前やその他の情報を保持するクラスです。

public static async Task<FacebookProfile> GetFacebookProfile(string accessToken) 
      { 
       var uri = GetUri("https://graph.facebook.com/v2.6/me", 
        Tuple.Create("fields", "name,email,id,first_name,last_name"), 
        Tuple.Create("access_token", accessToken)); 

       var res = await FacebookRequest<FacebookProfile>(uri); 
       return res; 
      } 
関連する問題