如何从twilio访问mediaURL,因为它与Api.ai集成?

时间:2017-08-21 21:29:01

标签: twilio mms dialogflow

我目前正试图弄清楚如何通过twilio聊天机器人接收mms消息。我无法弄清楚如何从twilio访问mediaURL,因为它与Api.ai集成 - 任何人都知道有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

API.AI保留有关每次集成的原始请求的信息。使用webhook,您应该能够获得有关请求的所有信息,包括mediaURL。来自集成的API.AI webhook请求包括一个名为char buf[1024] = {0}; int bluetoothSocket, client, bytes_read; struct sockaddr_rc loc_addr = {0}; struct sockaddr_rc client_addr = {0}; socklen_t opt = sizeof(client_addr); bdaddr_t my_bdaddr_any = {0, 0, 0, 0, 0, 0}; bdaddr_t my_bdaddr_all = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; bdaddr_t my_bdaddr_local = {0, 0, 0, 0xff, 0xff, 0xff}; bluetoothSocket = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); loc_addr.rc_family = AF_BLUETOOTH; loc_addr.rc_bdaddr = (bdaddr_t &) my_bdaddr_all; loc_addr.rc_channel = (uint8_t) 1; int ret = -1; if(ret = bind(bluetoothSocket, (struct sockaddr *)&loc_addr, sizeof(loc_addr)) == -1) { printf("Bluetooth bind failed.\n"); return 0; } listen(bluetoothSocket, 1); client = accept(bluetoothSocket, (struct sockaddr *)&client_addr, &opt); if (client == -1) { close(client);" } ba2str(&loc_addr.rc_bdaddr, buf); fprintf(stderr, "accepted connection from %s\n", buf); memset(buf, 0, sizeof(buf)); bytes_read = read(client, buf, sizeof(buf)); if (bytes_read > 0) { printf("Bluetooth bytes received [%s]\n", buf); } close(client); close(bluetoothSocket); return; 的JSON对象,它应该包含您需要的信息。 API.AI对您的服务器的webhook请求中的JSON应具有以下格式:

originalRequest

数据属性应包含您要查找的信息。

答案 1 :(得分:0)

在仔细研究这个问题之后 - Facebook / Twilio没有将图像事件传递给API.ai.如果那里的另一个人试图让api.ai回复图像事件 - 你必须在facebook / twilio和Api.ai之间构建一个node.js层,以确保传递信息。