Estoy creando un chat web y necesito integrar un asistente usando Twilio Autopilot, uso los canales personalizados de Autopilot de la siguiente manera:
https://channels.autopilot.twilio.com/v2/{AccountSid}/{AssistantSid}/custom/webchatMi código de fondo:
// Assistant URL Memory parameter const context = JSON.stringify({ accountHolder: "foo bar", balance: 123 }, null, ""); // Request params const urlencoded = new URLSearchParams(); urlencoded.append("Language", "en-US"); urlencoded.append("UserId", message.Author); urlencoded.append("Text", message.Body); const requestConfig: AxiosRequestConfig = { headers: { "content-type": "application/x-www-form-urlencoded", "accept": "application/json", "authorization" : "Basic " + Buffer.from(accountSid + ":" + authToken).toString("base64") }, method: "POST", url: `https://channels.autopilot.twilio.com/v2/${accountSid}/${assistantSid}/custom/webchat?Memory=${context}`, data: urlencoded }; // Trigger the bot const twilioResponse = this.httpService.request(requestConfig); const result = await lastValueFrom(twilioResponse.pipe(map((response) => response.data)));Función Twilio:
exports.handler = async function(context, event, callback) { console.log(event.Memory); const userData = JSON.parse(event.Memory); // Memory does not contains my payload ! return callback(null, { "actions": [ { "say": `Hello ${userData.accountHolder}, your balance is ${userData.balance}` }, { "listen": true } ] }); };Mi problema es que el parámetro Memoria no se envía a la función.
Tuve un problema similar al tratar de pasar la carga útil y contacté a un soporte de Twilio.
La respuesta que recibí fue: "Según la actualización actual de nuestro equipo de ingeniería, no están pensando en implementar el parámetro Memoria en el punto final V2, ya que hay muchos menos usuarios que lo consumen. Tendrá que usar el punto final V1 para Autopilot si está buscando usar el parámetro de URL "Memoria" para su caso de uso".
Por lo tanto, la URL deberá verse así: https://channels.autopilot.twilio.com/v1/ACxxx/UAxxx/custom/chat?Memory={"CarModel":"Diablo","CarMake":"Lamborghini" ,"CarYear":"2019"}'
Desarrollador evangelista de Twilio aquí.
Hubiera pensado que podría querer codificar la URL de la memoria JSON cuando la agregue a la URL. Prueba esto:
const context = encodeURIComponent( JSON.stringify({ accountHolder: "foo bar", balance: 123 }, null, "") );