2

をクリックしてBotFrameworkのウェブチャットにテキストを送信ユーザは「チャットボットでチャット」リンクをクリックする。私は、Microsoftのボットフレームワークとのチャットボットを開発してきたし、含まれていることを私のウェブサイトにDirectLineを経由してリンク

でも、このリンクをクリックすると、チャットボットで会話がすぐに開始されます。私はこれを行うにはJqueryとチャット入力を記入して、チャットボイスにリンクをクリックすると送信しています。

$("#chatbot_link").on("click", function(){ 
    $("#chatbot_body").show(); // show chatbot window 
    $("input.wc-shellinput").val("start"); // fill input field with 'start' 
    $(".wc-console").addClass("has-text"); // add has-text class (necessary?) 
    $(".wc-send").click(); // submit form by clicking wc-send 
} 

しかし、これは機能しません。 入力はチャットボットに送信されないので、チャットボットは何も言わない。

私がここで間違っていることは何ですか?

どうもありがとう:)

+0

の – JasonSowers

+0

可能な重複[ボットフレームワークが組み込まれたチャットコントロールページのserviceURLのを取得]これはここhttps://github.com/Microsoft/BotFramework-WebChatかもしれ尋ねるには良い場所(https://でのstackoverflow .com/questions/42825048/bot-framework-get-the-service-of-embedded-chat-c​​ontrol-page) –

答えて

0

あなたが「ウェルカムメッセージ」を探しているように聞こえる - これは、彼らが最初にチャットに参加する際、ユーザーにボットから送信されたメッセージです。例:「Shopping Botへようこそ!あなたのショッピングリストを追跡するのを手伝ってくれます」など、ボットの一般的な機能について説明しています。あなたのボットに次のコードを追加することでNode.jsの中でこれを行うことができます:

// Welcome message for Node.js bot 
bot.on('conversationUpdate', function (message) { 
    if (message.membersAdded) { 
     message.membersAdded.forEach(function (identity) { 
      if (identity.id == message.address.bot.id) { 
       // Bot is joining conversation 
       // - For WebChat channel you'll get this on page load. 
       var reply = new builder.Message() 
         .address(message.address) 
         .text("Welcome to my page"); 
       bot.send(reply); 
      } else { 
       // User is joining conversation 
       // - For WebChat channel this will be sent when user sends first message. 
       // - When a user joins a conversation the address.user field is often for 
       // essentially a system account so to ensure we're targeting the right 
       // user we can tweek the address object to reference the joining user. 
       // - If we wanted to send a private message to teh joining user we could 
       // delete the address.conversation field from the cloned address. 
       var address = Object.create(message.address); 
       address.user = identity; 
       var reply = new builder.Message() 
         .address(address) 
         .text("Hello %s", identity.name); 
       bot.send(reply); 
      } 
     }); 
    } 
}); 

出典:https://gist.github.com/nwhitmont/d9910fcf7ab4048ee37bd5c789cfc375

0

@Nils Wによって答えは素晴らしいです。バックチャネルを使用してしまったのは結局のところ、私は他の仕事のためにも必要としていたからです。 https://docs.microsoft.com/en-us/bot-framework/nodejs/bot-builder-nodejs-backchannelには、ボタンがクリックされたこのイベントがバックチャネル経由でボットに送信される、私の質問によく似た例があります。

bot.on("event", function (event) { 
    var msg = new builder.Message().address(event.address); 
    msg.data.textLocale = "en-us"; 
    if (event.name === "buttonClicked") { 
     msg.data.text = "I see that you clicked a button."; 
    } 
    bot.send(msg); 
}) 
関連する問題