我使用Microsoft Bot Framework创建了一个Bot,我可以通过Emulator和Web Chat连接到它。我在用户界面中登录用户,一旦用户登录,我需要将用户名和其他一些细节发送给Bot终点。因此,Bot可以直接向我发布的信息问候用户并进入聊天。我创建了CURL帖子请求,但它没有达到那个终点。任何人,请在这里指出我的问题。 CURL POST请求的示例将是非常有用的。 感谢
答案 0 :(得分:2)
如果你想通过发帖请求进行聊天......这是方法。
通过发布电话获取对话。
按如下方式拨打电话
curl -X POST --header 'Accept: application/json 'https://directline.botframework.com/api/conversations/'
使用此标题
Authorization: BotConnector "Your Direct Line Secret Here"
响应是带有conversationId字段的json。
使用电话后发送消息
使用相同的标题发送一个帖子,并为Content-Type: application/json
curl -X POST --header 'Content-Type: application/json' -d '{"text": "Hi"}' 'https://directline.botframework.com/api/conversations/1234/messages'
请查看此Direct Line API Reference以获取更多信息。请记住重新生成访问令牌,因为它将在30分钟后过期。我仍然更喜欢连接器客户端方法。它更容易保持上下文,不需要重新生成令牌。
答案 1 :(得分:0)
我认为这是不可能的。您只能通过模拟器中的连接器客户端与机器人进行交谈,除非您设置了Direct Line API,否则发送POST请求将无法工作反过来调用连接器客户端。您可以使用连接器客户端将用户详细信息设置为bot用户数据,并将其用于其他位置。这是一个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
答案 2 :(得分:0)
我在内部Web服务器上部署了一个机器人,我有一个客户端应用程序(不是Web客户端)使用REST API调用很愉快地与它交谈。
如果您使用Azure的Azure URL(而不是Bot Framework中的URL),我不知道相同的概念是否有效,但它可能值得一试。如果Bot仿真器可以与Azure通信,那么任何REST API都应该可以工作。
您需要一个合适的JSON字符串作为邮件正文发送。我复制了你在Bot仿真器中看到的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)
您需要管理相关类中的一些变量来维护消息链,但是通过检查您可以在Bot仿真器中看到的Json响应,您应该能够将其选中
我很欣赏答案不是以CURL为基础的,但希望它可能有所帮助,你可以根据需要进行调整