Aviso:

Para brindarle información de soporte completa de manera más rápida, el contenido de esta página ha sido traducido al español mediante traducción automática. Para consultar la información de soporte más precisa, consulte la versión en inglés de este contenido.

Configurar Actions

Después de crear el bot, necesitarás crear actions y configurar las respuestas de las actions según sea necesario. Generalmente puedes elegir configurar la respuesta de una action para que se base en una lógica de negocio o en una respuesta estática directa sin involucrar ninguna operación. En este tutorial, la respuesta de todas las actions se configurará basándose en la ejecución de una lógica de negocio.

Crearemos el siguiente conjunto de actions para el bot de ecommerce, para que los usuarios puedan interactuar directamente con el bot y realizar acciones con facilidad.

  • Listar los productos en la tienda de ecommerce
  • Realizar un nuevo pedido
  • Ver los detalles de un pedido
  • Cambiar la dirección de entrega
  • Reprogramar el pedido a una fecha posterior

Para configurar una action basada en las necesidades específicas de tu aplicación, debes definir las sample sentences y params apropiados para ella. En esta sección, discutiremos en detalle las sample sentences y params que se deben configurar para las actions mencionadas anteriormente para tu bot de ecommerce.

Después de crear un bot de ConvoKraft y elegir la plataforma de desarrollo apropiada para construir la lógica de negocio, se mostrará la página de detalles del bot como se muestra en la captura de pantalla a continuación.

Sigue los pasos listados a continuación para crear y configurar actions para el bot de ecommerce:

  1. Haz clic en Create Action después de abrir el bot para agregar una nueva action. actions-page

  2. Crearemos la primera action para nuestro bot de ecommerce para listar los artículos disponibles en la tienda. En la ventana emergente que se abre, proporciona el nombre de la action como “List the items available in Store”. Selecciona la respuesta como Based on a business logic y luego haz clic en Next. list-items-action

  3. Configura las sample sentences aplicables. De forma conversacional, el usuario podría activar esta action de muchas maneras, como “list the items available”, “what are the products available in the store?”. Puedes configurar oraciones similares como las sample sentences para la action y hacer clic en Next. list-items-sample-sentences

  4. No configuraremos ningún param para esta action. Por lo tanto, puedes omitir este paso y proceder a hacer clic en Save. list-items-params

  5. Después de configurar las sample sentences y params de una action, se mostrará la página de detalles de la Action. list-items-execution-function

Since we have chosen to build the business logic of the ConvoKraft bot using Deluge, the Execution function will be enabled by default.

Nota: Para esta action en particular, usaremos únicamente la Execution function.

Haz clic en Edit Function y el Editor de Deluge de ConvoKraft se abrirá automáticamente.

  1. Para codificar la lógica de negocio, puedes copiar y pegar el código mencionado a continuación para esta función en el editor y hacer clic en Save script.
copy
result = Map();
Accesstoken = invokeurl
[
 url :"https://test-773793963.development.catalystserverless.com/server/TokenGenerate/execute"
 type :GET
];
info Accesstoken.getJSON("output");
accesstoken = "Zoho-Oauthtoken " + Accesstoken.getJSON("output");
header_data = Map();
header_data.put("Content-Type","application/json");
header_data.put("Authorization",accesstoken);
CRMresponse = invokeurl
[
 url :"https://www.zohoapis.com/crm/v2/EcomProducts?fields=Name,Product_image_url,Price,Inventory_Count,Product_image"
 type :GET
 headers:header_data
];
info CRMresponse;
cardlist = List();
productNote = Map();
productNote.put("type","note");
productNote.put("content","List of items available are listed as follows ");
cardlist.add(productNote);
for each  record in CRMresponse.getJSON("data")
{
 info record;
 name = record.getJSON("Name");
 price = record.getJSON("Price");
 product_id = record.getJSON("id");
 image = record.getJSON("Product_image_url");
 inventory = record.getJSON("Inventory_Count");
 listItem = Map();
 listItem.put("type","list");
 listItem.put("format","bullet");
 listElements = List();
 elem1 = {"label":"Name : " + name};
 elem2 = {"label":"Total Price : $ " + price};
 elem3 = {"label":"Product ID : " + product_id};
 elem4 = {"label":"Stock : " + inventory};
 listElements.add(elem1);
 listElements.add(elem2);
 listElements.add(elem3);
 listElements.add(elem4);
 listItem.put("elements",listElements);
 //info listItem;
 // definiendo la tarjeta 'image'
 // definiendo la tarjeta 'note'
 productPic = Map();
 productPic.put("type","image");
 productPic.put("content",record.getJSON("Product_image_url"));
 cardlist.add(productPic);
 cardlist.add(listItem);
}
info cardlist;
result.put("card",cardlist);
result.put("message","List of Objects in response");
return result;
Note : To learn more about Deluge editor in detail, please refer to this page.

list-edit-exec

  1. Haz clic en Test this action en la esquina inferior derecha de la página para probar las configuraciones realizadas en la action actual. list-test-action Aquí, probar una action simplemente significa interactuar con el bot y hacer preguntas relacionadas con las configuraciones realizadas para la action en particular.
Nota: Las sample sentences configuradas para la action se mostrarán como sugerencias en la ventana de chat. Puedes elegir una de la lista o iniciar tu propia conversación con el bot de ConvoKraft según tu preferencia.

Por ejemplo, ingresa “Can you list the items with their stock” en la ventana de chat. El bot comprende la intención del mensaje e intenta encontrar una coincidencia con las sample sentences definidas y ejecuta la lógica de negocio para proporcionar la respuesta.

test-list-action

  1. Después de probar la action, continúa haciendo clic en DONE.

De manera similar, crearemos las actions restantes del bot de ecommerce. Los pasos mencionados anteriormente se aplicarán a todas las actions, además es posible que necesites crear params y configurar la lógica en una context handler function.

Place an Order

  1. Crea una nueva action desde la página de detalles del bot para responder basándose en la lógica de negocio como se discutió en el paso anterior, y nómbrala como “Place an order”. Las sample sentences para esta action se pueden definir de la siguiente manera:

    • “I want to place an order”

    • “I would like to place an order of the product id :5804508000000460006 to be delivered on 10-Jul-2023”

Haz clic en Next después de configurar las oraciones.

place-order-params

  1. Haz clic en New Param y haz clic en String. Proporciona el nombre del param como “productid” y agrega un mensaje de solicitud consultando la tabla a continuación. Para obtener más información sobre los atributos de cada tipo de param en detalle, consulta esta página. productid-param

Crearemos los siguientes params para esta action:

Param Type Name Prompt message Prompt message for validation failure
String productid Please enter the Product ID The entered ProductID is invalid. Please check and retry.
Email cxemail Please enter your Email ID The entered email ID is invalid. Please check and retry.
Date cxdate Please enter the date on which you expect the delivery The entered date is invalid. Please check and retry.
String cxaddr Please enter the address where you want the order to be delivered The entered address is invalid. Please check and retry.

De manera similar, crea los otros tres params, “cxemail”, “cxdate” y “cxaddr” con el tipo de param y mensajes de solicitud como se mencionan en la tabla anterior.

Nota: El modo de entrada para un param de fecha se puede seleccionar como Textual o Visual, según tus preferencias.
  1. Asocia los params con el texto correspondiente en las sample sentences, para instruir al bot a solicitar las entradas del usuario consecutivamente en la conversación. Para esto, pasa el cursor sobre el texto en la sample sentence y elige el param correspondiente para asociarlos. Aquí, asociaremos “cxemail”, “productid” y “cxdate” con sus valores de ejemplo correspondientes en las sample sentences como se muestra en la captura de pantalla a continuación. place-order-association

  2. Después de configurar las sample sentences y params para la action, haz clic en Save.

  3. Ahora puedes proceder a codificar la lógica de negocio en la execution function, similar a lo que hicimos para la action anterior.

Copia y pega el código a continuación en la página de la execution function y haz clic en Save Script.

copy
result = Map();
info productid;
info cxemail;
info cxdate;
info cxaddr;
placeorder = Map();
Accesstoken = invokeurl [ url :"https://test-773793963.development.catalystserverless.com/server/TokenGenerate/execute"
type :GET ]; //Reemplaza el org id de tu proyecto en la URL
info Accesstoken.getJSON("output");
accesstoken = "Zoho-Oauthtoken " + Accesstoken.getJSON("output");
info accesstoken;
header_data = Map();
header_data.put("Content-Type","application/json");
header_data.put("Authorization",accesstoken);
try 
{
 //CRMresponse = invokeurl
 //[
 // url :"https://www.zohoapis.com/crm/v2/EcomProducts/" + productid
 // tipo :GET
 // conexión:"ecommerce"
 //];
 CRMresponse = invokeurl
 [
  url :"https://www.zohoapis.com/crm/v2/EcomProducts/" + productid
  type :GET
  headers:header_data
 ];
 info CRMresponse;
 if(CRMresponse.isNull() && CRMresponse.getJSON("status") != "error")
 {
  stock_count = 0;
  info "Empty response. So stock count reset";
  placeorder.put("Stiock","Empty");
 }
 else
 {
  recordid = CRMresponse.getJSON("data").getJSON("id");
  stock_count = CRMresponse.getJSON("data").getJSON("Inventory_Count");
  imageurl = CRMresponse.getJSON("data").getJSON("Product_image_url");
  productname = CRMresponse.getJSON("data").getJSON("Name");
  price = CRMresponse.getJSON("data").getJSON("Price");
 }
}
catch (e)
{
 info e.lineNo;
 // Muestra el número de línea de la sentencia que causó el error 
 info e.message;
 // Muestra el mensaje de error 
 info e;
 // Muestra tanto el número de línea como el mensaje de error 
}
if(stock_count > 0)
{
 stock_count = stock_count - 1;
 reduceStock = Map();
 reduceStock.put("id",recordid);
 reduceStock.put("Inventory_Count",stock_count);
 updatedata = list();
 updatedata.add(reduceStock);
 updatedatamap = Map();
 updatedatamap.put("data",updatedata);
 //updateResp = invokeurl
 //[
 // url :"https://www.zohoapis.com/crm/v2/EcomProducts"
 // tipo: PUT
 // parameters:updatedatamap.toString()
 // conexión:"ecommerce"
 //];
 updateResp = invokeurl
 [
  url :"https://www.zohoapis.com/crm/v2/EcomProducts"
  type :PUT
  parameters:updatedatamap.toString()
  headers:header_data
 ];
 info updateResp;
 //info zoho.crm.updateRecord("EcomProducts",productid,reduceStock);
 placeorder.put("Name",productname + " " + cxdate);
 placeorder.put("Product_Name",productname);
 placeorder.put("Email",cxemail);
 placeorder.put("Delivery_Address",cxaddr);
 placeorder.put("Expected_Delivery_Date",cxdate.toDate("yyyy-mm-dd"));
 info toDate(cxdate,"yyyy-mm-dd");
 info toDate(cxdate,"MM,d,yyyy");
 placeorder.put("product_image_url",imageurl);
 placeorder.put("Price",price);
 placeorder.put("OrderID",productid + "_" + randomNumber(1111111,9999999));
 placeorder.put("Order_Status","Reviewing the Order");
 info placeorder;
 insertdata = list();
 insertdata.add(placeorder);
 insertdatamap = Map();
 insertdatamap.put("data",insertdata);
 //insertResp = invokeurl
 //[
 // url :"https://www.zohoapis.com/crm/v2/Orders"
 // tipo: POST
 // parameters:insertdatamap.toString()
 // conexión:"ecommerce"
 //];
 insertResp = invokeurl
 [
  url :"https://www.zohoapis.com/crm/v2/Orders"
  type :POST
  parameters:insertdatamap.toString()
  headers:header_data
 ];
 info insertResp;
 //info zoho.crm.createRecord("Orders",placeorder);
 result.put("message","Your order for the product - " + CRMresponse.getJSON("data").getJSON("Name") + " is placed successfully. It will be tried to be delivered on " + cxdate + " to " + cxaddr + " . Our Sales team will reach out to your via email to discuss about COD or prepayment before delivery.");
}
else if(stock_count == 0)
{
 info "The item is out of stock. Please retry after some days as we restock.";
 result.put("message","The item is out of stock. Please retry after some days as we restock.");
}
else
{
 result.put("message","There was some issue during the order. Please contact support team. They shall assist in placing this order for you.");
}
info stock_count;
//zoho.crm.updateRecord("EcomProducts",productid, )
//result.put("message","Function executed successfully");
broadcast.put("cxemail",cxemail);
result.put("broadcast",broadcast);
return result;
Nota: Asegúrate de reemplazar el org ID de tu proyecto en la línea 9 y luego guarda el script.
  1. Similar a la action anterior, puedes probar la action simultáneamente desde el editor de Deluge de ConvoKraft y luego hacer clic en DONE. test-place-order

View Order Details

  1. Crea una nueva action y elige configurar una respuesta basada en lógica de negocio. Nómbrala como “View Order Details”.

  2. Agrega las siguientes sample sentences para la action:

    • “Where is my order?”
    • “I want to view my order details of email id amelia.burrows@zylker.com
    • “I want to check my order details” view-order-action
  3. Define los params especificados a continuación para la action como se discutió en la última sección. Puedes asociar los params con la sample sentence como se muestra en la captura de pantalla anterior y hacer clic en Save.

Param Type Name Prompt message Prompt message for validation failure
Email cxemail Please provide the email ID associated with your order The entered email ID is invalid. Please check and retry.
  1. Después de definir las sample sentences y params para la action, se mostrará la página de Details de la Action. Para esta action, configuraremos la Context handler function junto con la Execution function. Esto se utiliza para almacenar la dirección de email del usuario en el argumento broadcast de la execution function e instruir al bot de ConvoKraft para que recuerde la dirección de email en las conversaciones posteriores de la sesión de chat en lugar de solicitarla al usuario cada vez.

Copia y pega el código a continuación en la página de la execution function y haz clic en Save Script.

copy
result = Map();
// realizando llamada API para buscar detalles específicos del pedido del email id dado
//resp = zoho.crm.searchRecords("Orders","(Email:equals:" + cxemail + ")");
//extrayendo los detalles requeridos de la respuesta JSON
//info resp;
cardlist = List();
Accesstoken = invokeurl
[
 url :"https://test-773793963.development.catalystserverless.com/server/TokenGenerate/execute"
 type :GET
];
info Accesstoken.getJSON("output");
accesstoken = "Zoho-Oauthtoken " + Accesstoken.getJSON("output");
info accesstoken;
header_data = Map();
header_data.put("Content-Type","application/json");
header_data.put("Authorization",accesstoken);
//resp = invokeurl
//[
// url :"https://www.zohoapis.com/crm/v3/Orders/search?criteria=" + "((Email:equals:" + cxemail + "))"
// tipo :GET
// conexión:"ecommerce"
//];
resp = invokeurl
[
 url :"https://www.zohoapis.com/crm/v4/Orders/search?criteria=" + "((Email:equals:" + cxemail + "))"
 type :GET
 headers:header_data
];
info resp;
items_count = 0;
if(!resp.isEmpty())
{
 for each  order in resp.getJSON("data")
 {
  items_count = items_count + 1;
  info "+++++++++++";
  // información del pedido;
  orderid = order.getJSON("id");
  //CRMresponse = invokeurl
  //[
  // url :"https://www.zohoapis.com/crm/v3/Orders/" + orderid
  // tipo :GET
  // conexión:"ecommerce"
  //];
  CRMresponse = invokeurl
  [
   url :"https://www.zohoapis.com/crm/v3/Orders/" + orderid
   type :GET
   headers:header_data
  ];
  name = order.getJSON("Name");
  contact = order.getJSON("Contact_No").toString();
  email = order.getJSON("Email");
  product_name = order.getJSON("Product_Name");
  orderid = order.getJSON("OrderID").toString();
  price = order.getJSON("Price").toString();
  delivery_date = order.getJSON("Expected_Delivery_Date");
  delivery_address = order.getJSON("Delivery_Address");
  order_status = order.getJSON("Order_Status");
  //definiendo la lista con viñetas
  listItem = Map();
  listItem.put("type","list");
  listItem.put("format","bullet");
  listElements = List();
  elem1 = {"label":"Name : " + name};
  elem2 = {"label":"Contact No :" + contact};
  elem3 = {"label":"Email ID : " + email};
  elem4 = {"label":"Product Name : " + product_name};
  //elem5 = {"label":"Order ID : " + orderid};
  elem6 = {"label":"Total Price : $ " + price};
  elem7 = {"label":"Expected Delivery Date : " + delivery_date};
  elem8 = {"label":"Delivery Address : " + delivery_address};
  elem9 = {"label":"Order Status : " + order_status};
  listElements.add(elem1);
  listElements.add(elem2);
  listElements.add(elem3);
  listElements.add(elem4);
  //listElements.add(elem5);
  listElements.add(elem6);
  listElements.add(elem7);
  listElements.add(elem8);
  listElements.add(elem9);
  listItem.put("elements",listElements);
  //info listItem;
  // definiendo la tarjeta 'image'
  // definiendo la tarjeta 'note'
  productNote = Map();
  productNote.put("type","note");
  productNote.put("content",items_count + ") Your order details for order id : " + orderid + " are listed as follows: ");
  cardlist.add(productNote);
  productPic = Map();
  productPic.put("type","image");
  productPic.put("content",CRMresponse.getJSON("data").getJSON("product_image_url"));
  cardlist.add(productPic);
  cardlist.add(listItem);
  info "+++++++++++";
 }
 //info cardlist;
 result.put("card",cardlist);
}
else
{
}
// definir difusión
broadcast.put("cxemail",email);
result.put("broadcast",broadcast);
result.put("message","The Shoppers Stores. You don't have an order.");
return result;
Nota: Asegúrate de reemplazar el org ID de tu proyecto en la línea 9 y luego guarda el script.
  1. Navega de regreso a la página de Details de la Action y habilita la Context Handler Function como se muestra en la captura de pantalla a continuación. view-order-context-handler

  2. Después de habilitar la Context handler function, haz clic en OK en la ventana emergente que aparece para continuar. context-pop-up

  3. Ahora, copia y pega el código a continuación en el editor de la Context handler function y haz clic en Save Script.

copy

result = Map();
assign = Map();
if(broadcast != null)
{
 //verificando si el argumento 'broadcast' tiene algún dato
 cxemailid = broadcast.get("cxemailid");
 //obteniendo el valor de 'cxemailid' de 'broadcast'
 assign.put("cxemailid",cxemailid);
 //asignando el valor de cxemailid al parámetro 'cxemailid'
 result.put("assign",assign);
 result.put("todo","execute");
 // salta a la función de ejecución
}
result.put("todo","prompt");
return result;
  1. Haz clic en Test this action y prueba las configuraciones actualizadas de esta action de manera similar a las actions anteriores. test-view

  2. Después de probar los cambios, haz clic en DONE.

Change Delivery Address

  1. Similar a las actions creadas anteriormente, configuraremos la respuesta de esta action para que se base en una lógica de negocio. Ingresa el nombre de la action como “Change Delivery Address”. Para esta action, puedes definir las sample sentences que se indican a continuación:
  • “I want my order to be delivered at a different address”
  • “I want to change delivery address for my order id 5804508000000460006 under the email amelia.burrows@zylker.com

Agrega los params indicados a continuación para la action:

Param Type Name Prompt message Prompt message for validation failure
Email cxemail Please provide the email ID associated with your order. The entered email ID is invalid. Please check and retry.
String cxorderid Please enter your Order ID. The entered OrderID is invalid. Please check and retry.
String cxaddr Please enter the address where you want the order to be delivered. The entered address is invalid. Please check and retry.

Puedes asociar el param “cxemail” a la sample sentence como se muestra en la captura de pantalla a continuación.

delivery-address-params

  1. Después de configurar las sample sentences y params, copia y pega el código a continuación en la página de la execution function y haz clic en Save Script.
copy
result = Map();
//obteniendo el 'id' del pedido del argumento de caché
Accesstoken = invokeurl
[
 url :"https://test-773793963.development.catalystserverless.com/server/TokenGenerate/execute"
 type :GET
];
info Accesstoken.getJSON("output");
accesstoken = "Zoho-Oauthtoken " + Accesstoken.getJSON("output");
info accesstoken;
header_data = Map();
header_data.put("Content-Type","application/json");
header_data.put("Authorization",accesstoken);
addrmap = Map();
//addrmap.put("Delivery_Address",cxaddr);
//reduceStock = Map();
searchOrderresp = invokeurl
[
 url :"https://www.zohoapis.com/crm/v2/Orders/search?criteria=((OrderID:equals:" + cxorderid + "))"
 type :GET
 headers:header_data
];
recordid = searchOrderresp.getJSON("data").getJSON("id");
addrmap.put("id",recordid);
addrmap.put("Delivery_Address",cxaddr);
updatedata = list();
updatedata.add(addrmap);
updatedatamap = Map();
updatedatamap.put("data",updatedata);
updateResp = invokeurl
[
 url :"https://www.zohoapis.com/crm/v2/Orders"
 type :PUT
 parameters:updatedatamap.toString()
 headers:header_data
];
//realizando una llamada API para reprogramar el pedido a la fecha dada
broadcast.put("cxemail",cxemail);
//configurando el argumento 'broadcast'
result.put("broadcast",broadcast);
result.put("message","Your order has been rescheduled successfully.");
return result;
Nota: Asegúrate de reemplazar el org ID de tu proyecto en la línea 5 y luego guarda el script.
  1. Nuevamente, prueba la action usando la ventana de chat Test this Action iniciando conversaciones relacionadas con esta action. test-delivery-address

Re-schedule order date

  1. Ingresa el nombre de la action como “Reschedule order to later date”. Para esta action, puedes definir las sample sentences que se indican a continuación:
  • “Reschedule my order to later date”
  • “Postpone the delivery date of my order”
  • “I want to change my orders delivery date as 19/07/2023 for my order id 5804508000000460006 of my email amelia.burrows@zylker.com

Agrega los params a continuación para la action:

Param Type Name Prompt message Prompt message for validation failure
Email cxemail Please provide the email ID associated with your order. The entered email ID is invalid. Please check and retry.
String cxorderid Please enter your Order ID. The entered OrderID is invalid. Please check and retry.
Date cxdate Mention the date you would like to reschedule your order The entered date is invalid. Please check and retry.

Puedes asociar los params como se muestra en la captura de pantalla a continuación y hacer clic en Save.

reschedule-params

  1. Después de configurar las sample sentences y params, copia y pega el código a continuación en la página de la execution function y haz clic en Save Script.
copy
result = Map();
//obteniendo el 'id' del pedido del argumento de caché
Accesstoken = invokeurl
[
 url :"https://test-773793963.development.catalystserverless.com/server/TokenGenerate/execute"
 type :GET
];
info Accesstoken.getJSON("output");
accesstoken = "Zoho-Oauthtoken " + Accesstoken.getJSON("output");
info accesstoken;
header_data = Map();
header_data.put("Content-Type","application/json");
header_data.put("Authorization",accesstoken);
searchOrderresp = invokeurl
[
 url :"https://www.zohoapis.com/crm/v2/Orders/search?criteria=((OrderID:equals:" + cxorderid + "))"
 type :GET
 headers:header_data
];
info searchOrderresp;
recordid = searchOrderresp.getJSON("data").getJSON("id");
info recordid;
datemap = Map();
datemap.put("id",recordid);
datemap.put("Expected_Delivery_Date",cxdate.toDate());
info datemap;
updatedata = list();
updatedata.add(datemap);
updatedatamap = Map();
updatedatamap.put("data",updatedata);
updateResp = invokeurl
[
 url :"https://www.zohoapis.com/crm/v2/Orders"
 type :PUT
 parameters:updatedatamap.toString()
 headers:header_data
];
info updateResp;
//realizando una llamada API para reprogramar el pedido a la fecha dada
broadcast.put("cxemail",cxemail);
//configurando el argumento 'broadcast'
result.put("broadcast",broadcast);
result.put("message","Your order has been rescheduled successfully.");
return result;
Nota: Asegúrate de reemplazar el org ID de tu proyecto en la línea 5 y luego guarda el script.
  1. Nuevamente, al igual que las actions anteriores, puedes probar esta action también y hacer clic en DONE. test-reschedule

Ahora, hemos configurado todas las actions necesarias y la lógica de negocio para ellas.

Última actualización 2026-03-30 13:40:30 +0530 IST

ENLACES RELACIONADOS

Create Action Create Bot