我正在創建一個機器人主動地開始與我之前從未進行過對話的帳戶的對話。我已經創造了另一個控制器,我張貼並執行以下步驟:主動的Bot消息傳遞 - CreateDirectConversation - 未授權的異常
public class OutboundController : ApiController {
public HttpResponseMessage Post([FromUri] int id, [FromBody] OutboundData outboundData) {
MicrosoftAppCredentials.TrustServiceUrl(outboundData.ServiceUrl);
//create conversation
var connector = new ConnectorClient(new Uri(outboundData.ServiceUrl));
var botAccount = new ChannelAccount { Id = outboundData.FromAccountId, Name = outboundData.FromAccountName };
var toAccount = new ChannelAccount { Id = outboundData.ToAccountId, Name = outboundData.ToAccountName };
if(!MicrosoftAppCredentials.IsTrustedServiceUrl(outboundData.ServiceUrl)) {
throw new Exception("service URL is not trusted!");
}
var conversationResponse = connector.Conversations.CreateDirectConversation(botAccount, toAccount);
var client = new BuslogicClient();
var confirmData = client.GetOutboundData(id);
var greetingMessage = CreateGreetingMessage(confirmData);
var convoMessage = Activity.CreateMessageActivity();
convoMessage.Text = greetingMessage;
convoMessage.From = botAccount;
convoMessage.Recipient = toAccount;
convoMessage.Conversation = new ConversationAccount(id: conversationResponse.Id);
convoMessage.Locale = "en-Us";
connector.Conversations.SendToConversationAsync((Activity)convoMessage);
string message = string.Format("I received correlationid:{0} and started conversationId:{1}", id, conversationResponse.Id);
var response = Request.CreateResponse(HttpStatusCode.OK, message);
return response;
}
當我打電話connector.Conversations.CreateDirectConversation我收到以下異常:附加信息:授權微軟的App ID [ID]失敗狀態碼未經授權,原因短語'未經授權'。如果我使用appId和密碼爲空來做到這一點,那麼在通道模擬器中一切正常。我已經嘗試將MicrosoftAppCredentials提供給ConnectorClient的構造函數,但這沒有任何影響。我讀過其他線程的服務URL必須是可信的,所以我使用了MicrosoftAppCredentials.TrustServiceUrl。
版本我使用: BotBuilder 3.5.3 信道仿真器3.0.0.59
用例爲我的機器人是張貼到一些用戶信息來創建一個積極的消息出站控制器發送(特別是SMS)。如果用戶對我的消息作出響應,它將被消息控制器攔截並傳遞到我的對話框,以便在同一頻道上進行進一步處理和對話響應。
我也看過:https://github.com/Microsoft/BotBuilder/issues/2155,但不太理解評論中描述的解決方案,或者它甚至與我試圖解決的問題有關。
任何建議或幫助,將不勝感激!
的[發起消息從BOT到用戶上BotFramework](可能的複製http://stackoverflow.com/questions/42749982/initiate-a-消息從機器人到用戶在機器人框架) – Artem
@artem該場景有點不同,因爲我沒有恢復以前的傳入對話。我正在發起一個新的談話。在你提供了一個關於CreateDirectConversationAsync的問題的鏈接中,你回答「\t 」確定我做了。它不起作用。顯然,錯誤與創建對話方式無關「我想知道是否必須發佈到連接器api帳戶數據首先使連接器可以完全信任對話創建。 –