我目前正试图弄清楚如何通过twilio聊天机器人接收mms消息。我无法弄清楚如何从twilio访问mediaURL,因为它与Api.ai集成 - 任何人都知道有没有办法做到这一点?
答案 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层,以确保传递信息。