主动Bot消息传递 - CreateDirectConversation - 未经授权的异常

时间:2017-03-21 22:32:02

标签: botframework

我正在创建一个机器人,主动与我以前从未与之交谈的帐户开始对话。我创建了另一个我要发布的控制器并执行以下步骤:

library(shiny)

letters = c('A','B','C','D','E','F','G','H','I','J','K','L')
words = list( "A" = c("apples","aardvark","alabama"),
              "B" = c("banana","baltimore","beehive"),
              "C" = c("catastrophe","cantalope"),
              "D" = c("dinosaur","dairy","dolphin"),
              "E" = c("eager","elephant","ecumenical"),
              "F" = c("fleming","florida","flight"),
              "G" = c("gator","greater","gait"),
              "H" = c("HI"),
              "I" = c("igloo","ignominious","interesting"),
              "J" = c("jogging","jumpsuit"),
              "K" = c("kellog","kangaroo"),
              "L" = c("lemon","lime","lemonjello"))
ui <- fluidPage(

  selectInput("letter","Choose Letter",choices=letters,selectize=F), 

  # Initiate check box group
  checkboxGroupInput('words_by_letter',label='Select Your Favorite Words',choices = c(1))
)

server <- function(input, output, session) {

  v_selected <- reactiveValues(
    "A" = c("apples","aardvark","alabama"),
    "B" = c("banana","baltimore","beehive"),
    "C" = c("catastrophe","cantalope"),
    "D" = c("dinosaur","dairy","dolphin"),
    "E" = c("eager","elephant","ecumenical"),
    "F" = c("fleming","florida","flight"),
    "G" = c("gator","greater","gait"),
    "H" = c("HI"),
    "I" = c("igloo","ignominious","interesting"),
    "J" = c("jogging","jumpsuit"),
    "K" = c("kellog","kangaroo"),
    "L" = c("lemon","lime","lemonjello"))

  observeEvent(input$letter,{

    v_selected$last <- input$letter
    updateCheckboxGroupInput(session,
                             inputId  = "words_by_letter",
                             choices  = words[[input$letter]], 
                             selected = v_selected[[input$letter]])
  })
  overwriteIfConsistent <- function(selector,newvals,initwords){
    # only overwrite if the new values are int the initial list
    initwords1 <- initwords[[selector]] 
    truthvek <- newvals %in% initwords1 # are the newvals in this list?
    if (sum(truthvek)==length(newvals)){ # need them all to be true
      v_selected[[selector]] = newvals   # ok, then overwrite
    }
  }
  observeEvent(input$words_by_letter,{ 
    overwriteIfConsistent(input$letter,input$words_by_letter,words)
  })
}
shinyApp(ui = ui, server = server)

当我调用connector.Conversations.CreateDirectConversation时,我收到以下异常:附加信息:Microsoft App ID [ID]的授权失败,状态码为Unauthorized,原因短语为“Unauthorized”。如果我使用appId和密码空白,一切都在通道模拟器中工作正常。我已经尝试将MicrosoftAppCredentials提供给ConnectorClient的构造函数,但这没有任何影响。我在其他线程上读到服务URL必须是可信任的,因此我使用了MicrosoftAppCredentials.TrustServiceUrl。

我正在使用的

版本: BotBuilder 3.5.3 Channel Emulator 3.0.0.59

我的机器人的用例是使用一些用户信息发送到出站控制器以创建要发送的主动消息(特别是SMS)。如果用户回复我的消息,它将被消息控制器拦截并传递到我的对话框,以便在同一频道上进行进一步处理和对话响应。

我还看了一下:https://github.com/Microsoft/BotBuilder/issues/2155但是不太明白评论中描述的解决方案,或者它甚至与我试图解决的问题有关。

任何建议或帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

您需要明确将凭据传递给connector:

var credentials = new MicrosoftAppCredentials("YoursMicrosoftAppId", "YoursMicrosoftAppPassword");
var connector = new ConnectorClient(serviceUrl, credentials);
相关问题