Fue un reto interesante, cuando ya supe me di cuenta que el proceso era bastante sencillo, pero en total inverti unas 7 horas seguidas para resolverlo, estos son los pasos que segui:
- Habilitar la secuencia que creamos secuencia_lectura como publica como el profesor enseño.
- Copie el link pero el publico(el de arriba) y lo pegué en la URL del webhook y al final era necesario colocarle .json para que devolviera un json, el link que es necesario autentica con el api key no me funciono, solo me devolvia el activationid aun colocando la extension .json, la verdad no se porque, esto de colocar la URL publica y al final .json lo encontre en la documentacion de webhooks y si funciono.
- Como se hizo en la clase que se implemento el traductor para el Watson Assistant, aca tambien era necesario crear un header con nombre Content-Type y valor application/json para que devuelva el json.
- la integracion la hice en el nodo cotizar que se habia creado en clases anteriores, por lo que dentro del nodo en customize habilite el webhook como respuesta y borre las anteriores respuestas, aunque no se si era necesario pero yo las borre.
- como parametro de la callout to my webhook solo hay uno y es en key colocar key y en value $tour, si se coloca tour en key tambien funciona pero el json trae todos los tours y luego no se puede separar, y el $tour es porque asi es como se guardo mas arriba la entidad entonces asi la reconoce, eso lo dice en la documentacion.
- En assitant responds, en if assistant recognizes debe ir $webhook_result_(aca va el numero de su webhook que se crea solo o se puede modificar) y en respond with para que solo les traiga el valor de la llave adulto publico se copia asi <? $webhook_result_4(en mi caso el tuyo puede ser otro num).rows[0].doc.PreciopublicoAdulto(esto yo lo modifique,ya explico que hice) ?>
- respecto a la respuesta <? $webhook_result_4.rows[0].doc ?> debe ir con espacio despues del primer ? y antes del segundo ?, esto es asi porque el json se guarda en 4 rows, entonces en rows[0] se trae la primera que es donde se encuentra el precio que necesitamos, a su vez la primer row tiene varias divisiones pero la que necesitamos se llama doc y la llave valor que necesitamos segun lo que le profe dijo es Precio público Adulto.
- Lo de PreciopublicoAdulto es porque la verdad cuando yo copie como originalmente esta guardada en el documento este valor que es Precio público Adulto me generaba un error entonces la solucion que encontre fue cambiar en cada uno de los documentos del cloudant Precio público Adulto por PreciopublicoAdulto y ahi si me dio.
- Cuando finalmente me dio solo traia un valor numerico y consideraba que quedaba muy simple asi, entones tambien modifique los valores de este parametro volviendolos strings en cada uno de los documentos del cloudant y de paso aproveche para que regresara tanto el valor del adulto como el del niño, esto es facil, por ejemplo en mi caso en el documento de cenotes cambie el 500 que esta despues de Precio público Adulto: por ‘‘El tour a cenotes tiene un valor de 500 pesos para adultos y de 250 pesos para niños’’ y asi para los otros documentos teniendo en cuenta que los valores cambian pero la base del mensaje puede ser la misma.
- Como la entidad Yucatán no existia entonces fue necesario crearla, y tambien la entidad Xixen Itza que se creo en clases anteriores fue necesario cambiarla a ChichenItza, los sobres de las entidades deben coindicir con los nombres que estan en los proveedores de los documentos porque sino retorna error o valores vacios.
- Por ultimo aunque no es necesario, inclui tambien una imagen en la respuesta como se aprendio en clases anteriores.
Si no entiendes aca esta la documentacion de webhooks, practicamente ahi esta casi todo lo que hice https://cloud.ibm.com/docs/assistant?topic=assistant-dialog-webhooks
Espero que sea de ayuda.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?