2017-10-06 78 views
1

我想發送消息給基於微軟bot框架的機器人。如何讓機器人工作?

這是我的代碼。

const builder = require("botbuilder"); 

    \\I have id and password, did not show them here 
    const config = { 
    appId: "**********************", 
    appPassword: "********************" 
    }; 

    const connector = new builder.ChatConnector(config); 
    const bot = new builder.UniversalBot(connector); 

    // respond to bot messages  
    app.post("/bot",() => console.log('being called') ,connector.listen()); 



    // define bot dialog routes 
    bot.dialog("/", session => { 

    console.log('++++++++++++++>', session.message.text) 

    }); 

它正在打印「正在呼叫」,但未打印「++++++++++++++>」。 我沒有收到任何錯誤消息。

如何檢查問題並修復此問題?

注意:這不是模擬器,我可以在本地應用程序內嘗試。

+0

你是如何觸發對話框的?根對話框不會立即觸發,你必須發送一條消息來觸發它。 – tombraider

回答

2

雖然似乎缺少代碼(例如,應用程序未定義),但我會假設您使用的是Express,而且這一方面沒有問題。您的根對話框在用戶輸入之前不會被觸發。

把這個超級簡單ConsoleConnector例如:

const builder = require('botbuilder') 

let connector = new builder.ConsoleConnector().listen() 
let bot = new builder.UniversalBot(connector) 

bot.dialog('/', (session) => { 
    console.log('Testing') 
}) 

粘貼到一個文件並運行它。您會注意到您不會收到任何錯誤消息,但是您也不會看到控制檯日誌。現在輸入任何內容並按回車。這將觸發根對話框並且console.log將會觸發。

如果您想在對話開始時發送主動消息,請查看Bot Framework documentation中的「問候用戶」示例。

編輯:

使用另一回聲博特例如快遞:

const express = require('express') 
const builder = require('botbuilder') 
const app = express() 
const port = 8080 

const connector = new builder.ChatConnector({ 
    appId: process.env.MICROSOFT_APP_ID, 
    appPassword: process.env.MICROSOFT_APP_PASSWORD 
}) 
const bot = new builder.UniversalBot(connector) 

bot.dialog('/', (session) => { 
    console.log('Testing') 
    session.send(session.message.text) 
}) 

app.post('/api/messages', connector.listen()) 

app.listen(port) 

我知道你不使用模擬器在這一點上,但是出於測試的目的,在本地主機點吧:8080/api/messages並鍵入內容。您將看到console.log消息出現,您輸入的消息將回顯給您。