如何在Twilio中使用DialogFlow实现和Webhooks?

时间:2019-04-28 14:25:51

标签: twilio dialogflow actions-on-google twilio-api dialogflow-fulfillment

我看到Dialogflow具有fulfiment和webhook安装,可以对机器人响应进行进一步的动态和后勤控制。我试图将数据库挂在webhook上,但是我使用的频道是Twilio短信,并且在连接两者时遇到了一些麻烦。当我激活激活时,twilio机器人不会读取它。有什么办法解决这个问题?

我已经使用Flask创建了一些webhooks,并使用ngrok短暂地整合了它,但是该机器人通过我为其设置的文本响应进行响应。它可用于Google帮助和Facebook Messenger,但不能与Twilio集成。 我还尝试使用inlineJS来查看是否有什么区别,以专门将Twilio定义为要使用的消息传递渠道,但是并没有达到成功的顶峰。

const functions = require('firebase-functions');
const {dialogflow} = require('actions-on-google');

const GOODLOCATION = 'location.good'
const NEARLOCATION = 'location.near'
const CHEAPLOCATION = 'location.cheap'
const WELCOME_INTENT = 'Default Welcome Intent'
const FALLBACK_INTENT = 'Default Fallback Intent'
const CRAVINGCULTUREINTENT = 'CravingCulture'
const CRAVINGITEM = 'CravingItem'

const app = dialogflow()

/*Supported Platforms*/

const PLATFORMS = {
  UNSPECIFIED: 'PLATFORM_UNSPECIFIED',
  FACEBOOK: 'FACEBOOK',
  SLACK: 'SLACK',
  TELEGRAM: 'TELEGRAM',
  KIK: 'KIK',
  SKYPE: 'SKYPE',
  LINE: 'LINE',
  VIBER: 'VIBER',
  ACTIONS_ON_GOOGLE: 'ACTIONS_ON_GOOGLE',
  TWILIO: 'TWILIO'
};

// Platforms that support Rich messaging
const SUPPORTED_RICH_MESSAGE_PLATFORMS = [
  PLATFORMS.FACEBOOK,
  PLATFORMS.SLACK,
  PLATFORMS.TELEGRAM,
  PLATFORMS.KIK,
  PLATFORMS.SKYPE,
  PLATFORMS.LINE,
  PLATFORMS.VIBER,
  PLATFORMS.ACTIONS_ON_GOOGLE,
  PLATFROM.TWILIO
];

app.intent(WELCOME_INTENT, (conv)=> {
  if(agent.requestSource === agent.TWILIO){
    conv.ask('This is working, Congratulations!')
  }
  else{
    conv.ask("Could not be served")
  }
});

app.intent(FALLBACK_INTENT, (conv)=> {
  conv.ask("I am unaware of that phrase, could you repeat that?")
});


exports.dialogflowFirebaseFulfillment = functions.https.onRequest(app)

我希望输出是用户通过twilio插入的任何东西,该机器人将相应地响应传入的内容。

1 个答案:

答案 0 :(得分:0)

也许有点晚了-希望这个问题仍然不会阻止/困扰您。

我在想你打算要
https://stackoverflow.com/a/50767410/1499803
不是:
if(agent.requestSource === PLATFORMS.TWILIO){

但是,if(agent.requestSource === agent.TWILIO){的值实际上也是小写的“ twilio”。