2017-11-28 7 views
0

Microsoft Bot Framework에서 봇을 코딩했습니다. 나는 LUIS 언어 모델을 사용했다. 나는 빠른 응답 및 아무 일도 발생하지 클릭에 얻을 수 있어요Microsoft Bot Framework (Node.js)의 대화 상자 간 전환

다음
bot.use(builder.Middleware.dialogVersion({ version: 1.0, resetCommand: /^reset/i })); 
bot.dialog('/', intents); 

intents.matches('GoogleHome', [ 

    function (session, args) { 
    if(builder.EntityRecognizer.findEntity(args.entities, 'cookingtips')) 
    { 
      quickReply(session, args) 
    } 
    if(builder.EntityRecognizer.findEntity(args.entities, 'wakingtips')) 
    { 
      //My rest of the code 
    } 

}]) 

내 quickReply

function quickreply(session, args){ 

    var msg = new builder.Message(session) 
       .text("Let me know the date and time you are comfortable with..") 
       .suggestedActions(
        builder.SuggestedActions.create(
         session,[ 
          builder.CardAction.imBack(session, "CookingTips", "CookingTips"), 
          builder.CardAction.imBack(session, "WalkingTips", "WalkingTips") 

         ] 
        ) 
       ); 
      builder.Prompts.choice(session, msg, ["CookingTips", "WalkingTips"]), function(session,results) { 
      console.log(results); 
      session.send('So I understand you want a cooking tip ' + results + ' right now'); 
      session.endDialog(); 
     }} 

의 코드입니다 : 다음은 코드의 내 작품이다. 나는 내 콘솔에서 다음을 참조하십시오

.BotBuilder:prompt-choice - Prompt.returning([object Object]) 
.BotBuilder:prompt-choice - Session.endDialogWithResult() 
/- Session.endDialogWithResult() 

는 대신,이 메시지가 내 루이스 보내거나 콜백 함수에 작성된 적어도 확인 메시지를 표시 할 수 싶습니다. 내가 어떻게 해?

답변

0

quickReply() 함수는 새 대화 상자를 만들지 않으므로 endDialog()은 현재 대화 상자를 종료하고 부모 대화 상자가 없어 재개 할 수 없습니다.

intents.matches('GoogleHome', [ 

    function (session, args, next) { 
    if(builder.EntityRecognizer.findEntity(args.entities, 'cookingtips')) 
    { 
      quickReply(session, args, next) 
    } 
    if(builder.EntityRecognizer.findEntity(args.entities, 'wakingtips')) 
    { 
      //My rest of the code 
    } 

},(session,result)=>{ 
//get the user choice here 
    console.log(result); 
    session.send(JSON.stringify(result)); 
}]) 

quickReply

function quickRelpy(session, args, next) { 
    var msg = new builder.Message(session) 
     .text("Let me know the date and time you are comfortable with..") 
     .suggestedActions(
      builder.SuggestedActions.create(
       session, [ 
        builder.CardAction.imBack(session, "CookingTips", "CookingTips"), 
        builder.CardAction.imBack(session, "WalkingTips", "WalkingTips") 

       ] 
      ) 
     ); 
    builder.Prompts.choice(session, msg, ["CookingTips", "WalkingTips"]); 
} 
+0

안녕 게리 :

당신은, 값을 통과 코드를 수정하기 위해 next 중간 leverate 수 있습니다. 시도했지만 제대로 작동하지 않았습니다. 사용자 선택을위한 코드를 작성할 수 있습니까? 내가 제대로하고 있다고 느낍니다. – CTD

+0

일부 코드 스 니펫을 추가하여 명확하게 만듭니다. basiclly, 당신의 로봇은 다음 폭포에서 사용자의 메시지를 수신합니다. –