2017-02-20 9 views
1

チャットウィンドウを開くのを避け、利用可能なオプションがわからないチャットボットを作成しようとしています。ユーザーがチャットウィンドウを開いたときに基本的な手順を説明したいと思います。ユーザーがFacebook上でチャットウィンドウを開いたときを検出することはできますか?

ユーザーがチャットウィンドウを開いたときにトリガーがありますか?たぶん私は確認することができます、そして、進行中の会話がないなら、私は基本的な指示を提供することができました。

私はいくつかのグーグルを行い、これについては何も見つかりませんでした。このようなことをすることは可能でしょうか?そうでない場合は、この問題を緩和し、チャットボットの機能とサポートされている指示に関する情報をユーザーに提供しますか?

+0

:ユーザーがFacebook上でメッセンジャーのダイアログを開いたときhttps://jsfiddle.net/tjepp6n1/ – Hackerman

答えて

2

私は酸の答えがないと思います。

しかし、IConversationUpdateActivityタイプのメッセージを傍受して、ユーザーがボットを会話に追加したかどうかを知ることができます。 C#プロジェクトテンプレートでは、このメッセージタイプを要求するコードブロックは見つかりますが、何もしません。

3

ConversationUpdateとContactRelationUpdateという2つのイベントタイプを監視できます。

最初のもの(ConversationUpdate)は、ユーザーが会話に追加または削除されたときに呼び出されます。したがって、利用可能なオプションを紹介できる場所があります。新しい会話が開始されたそれぞれのタイプになります。だから、迷惑になるかもしれません、あなたは小切手を追加するかもしれません - ユーザーがしばらくの間、ボットを使用している場合、それを表示しないでください。

2番目(ContactRelationUpdate)は、ユーザーがボットを連絡先に追加または削除するときに呼び出されます。一般的に、それはユーザーアクションごとに一度だけ呼び出されます。ここで

は、ボットフレームワークの例からの抜粋です:Facebookはボットがスカイプと違って会話を開始することはできませんNode.jsの

bot.on('conversationUpdate', function (message) { 
    // Check for group conversations 
    if (message.address.conversation.isGroup) { 
     // Send a hello message when bot is added 
     if (message.membersAdded) { 
      message.membersAdded.forEach(function (identity) { 
       if (identity.id === message.address.bot.id) { 
        var reply = new builder.Message() 
          .address(message.address) 
          .text("Hello everyone!"); 
        bot.send(reply); 
       } 
      }); 
     } 

     // Send a goodbye message when bot is removed 
     if (message.membersRemoved) { 
      message.membersRemoved.forEach(function (identity) { 
       if (identity.id === message.address.bot.id) { 
        var reply = new builder.Message() 
         .address(message.address) 
         .text("Goodbye"); 
        bot.send(reply); 
       } 
      }); 
     } 
    } 
}); 

bot.on('contactRelationUpdate', function (message) { 
    if (message.action === 'add') { 
     var name = message.user ? message.user.name : null; 
     var reply = new builder.Message() 
       .address(message.address) 
       .text("Hello %s... Thanks for adding me. Say 'hello' to see some great demos.", name || 'there'); 
     bot.send(reply); 
    } else { 
     // delete their data 
    } 
}); 

については

C#

private void HandleMessage(Activity message) 
{ 
    if (message.Type == ActivityTypes.ConversationUpdate) 
    { 
       if (activity.MembersAdded.Any(m => m.Id == activity.Recipient.Id)) 
       { 
        var connector = new ConnectorClient(new Uri(activity.ServiceUrl)); 

        var response = activity.CreateReply(); 
        response.Text = "Hi! I am Bot. Here's what you can do..."; 

        await connector.Conversations.ReplyToActivityAsync(response); 
       } 
    } 
    else if (message.Type == ActivityTypes.ContactRelationUpdate) 
    { 
     if (Activity.AsContactRelationUpdateActivity().Action ==    ContactRelationUpdateActionTypes.Add) 
     { 
        var connector = new ConnectorClient(new Uri(activity.ServiceUrl)); 

        var response = activity.CreateReply(); 
        response.Text = "Hi! I am Bot. Thanks for adding me. Here's what you can do..."; 

     } 
    } 
    return null; 
} 
5

ためか、他のプラットフォーム。 がありますが、まだ行うことができますいくつかのトリックです:

  • ゴーあなたのFacebookのページ[設定]、[メッセージングおよびチェック以下のように「Messengerの挨拶を表示する」、およびお使いのあいさつ文を書きます。 enter image description here

結果は次のようになります。

enter image description here

+0

ConversationUpdateをしてContactRelationUpdateがトリガされていません。これらは他のプラットフォームでもうまく動作します。 –

関連する問題