2016-05-26 19 views
0

私はMicrosoft Bot Frameworkを使用してBotを作成しました。エミュレータとWeb Chatを使用して接続できます。私は自分のUIにユーザーログインを持っていて、ユーザーがログインすると、ユーザー名やその他の詳細をBotエンドポイントに送信する必要があります。ボットは、私が投稿してチャットに参加した情報から直接ユーザーを迎えることができます。 CURLの投稿リクエストを作成しましたが、そのエンドポイントには当てられません。いずれにしても、ここで問題を指摘してください。 CURL POSTリクエストのサンプルは大きな助けになります。 ありがとうCURL POST Bot Frameworkへのリクエスト

答えて

0

これはできないと思います。 コネクタクライアントからのボットでのみ話すことができます。ダイレクトラインAPIを設定しないと、コネクタクライアントを呼び出さない限り、POSTリクエストは送信されません。コネクタクライアントを使用して、ユーザーの詳細をボットユーザーデータに設定し、それ以外の場所で使用することができます。これを行うサンプルのC#コードを示します。

var client = new ConnectorClient(appId, appSecret); 
var getData = await client.Bots.GetUserDataAsync(appId, userid); 
getData.Data = "Your User Details in some form as a string (I'd prefer a serialized JSON)"; 
await client.Bots.SetUserDataAsync(Constants.botId, userid, getData); 

設定した後はいつでもmessage.botuserdataを使用してアクセスできます。注:useridにはmessage.From.Id

1

としてアクセスできます。投稿リクエストでチャットを行いたい場合は、次のようにします。

  1. 郵送での会話を開始します。

    1. ダイレクトラインチャットを設定し、ダイレクトラインシークレットをコピーします。
    2. メイクポストコールこのヘッダ

      Authorization: BotConnector "Your Direct Line Secret Here"

      応答と

      curl -X POST --header 'Accept: application/json 'https://directline.botframework.com/api/conversations/'

      を以下のようにはconversationIdフィールドとJSONです。あなたは、余分なフィールドと同じヘッダーとポストコールを送るあなたはポストコール

      1. を使用してメッセージを送信

    3. にここから作ってあげるどんな会話のためにそれをする必要がありますで述べたようにContent-Type: application/json

      curl -X POST --header 'Content-Type: application/json' -d '{"text": "Hi"}' 'https://directline.botframework.com/api/conversations/1234/messages'

    4. のために体は、JSONが含まれていますAPIリファレンス

は、詳細については、このDirect Line API Referenceを見てください。 30分後にアクセストークンが期限切れになるので、アクセストークンを再生成することを忘れないでください。私はまだコネクタークライアントメソッドを好むでしょう。コンテキストを維持するのが簡単で、トークンを再生成する必要はありません。

+0

ありがとうございます。私はWeb Chatを使用しています。私はMicrosoft Web Chat IFRAMEを使用しません。あなたはそこを適切にコントロールすることはできないからです。私が見ているのは、このhttps://directline.botframework.comまたはhttps://webchat.botframework.comを持ってボットバックエンドに直接接続することです。 MSエミュレータはBot Rest End Pointを直接起動できます。カスタムWeb UIで同じことを再現しようとしています –

0

私は、内部Webサーバー上に配置されたボットを持っており、REST API呼び出しを使用してクライアントアプリケーション(Webクライアントではない)と通信しています。

ボットフレームのURLとは対照的に、ボットのAzure URLを使用する場合、同じコンセプトが有効かどうかはわかりませんが、それは参考になるかもしれません。 BotエミュレータがAzureと通信できる場合は、REST APIが動作するはずです。

メッセージの本文として送信するには、適切なJSON文字列が必要です。私はボットエミュレータに表示されているJSONをコピーし、それを基本として使用しました。

Dim client As RestClient = New RestClient(_localAddress) 'Address of the Bot 
    Dim request As RestRequest = New RestRequest("api/messages", Method.POST) 

    Dim byteArray = System.Text.Encoding.ASCII.GetBytes(_appID & ":" & _appsecret) ' Appropriate application secret and ID 
    request.AddHeader("Authorization", "Basic " & Convert.ToBase64String(byteArray)) 
    'messageDetails is my message class dervived from the Json from the Bot Emulator 
    messageDetails.text = messageToRelay 

    request.AddJsonBody(messageDetails) 
    ' response is then deserialised to a suitable BotReply class, again based on the Json you can see in Bot Emulator 
    Dim response = client.Execute(request) 

あなたがメッセージの連鎖を維持するために、関連するクラスの変数のいくつかを管理する必要がありますが、JSONレスポンスを調べることによって、あなたが

をそれを選ぶことができるはずですボットエミュレータで見ることができます

答えはCURLベースではありませんが、うまくいけば必要に応じて対応することができます。

関連する問題