OpenAI Alert! Plug Sample #11 - Next-generation chatbots, Zobot + ChatGPT Assistant

OpenAI Alert! Plug Sample #11 - Next-generation chatbots, Zobot + ChatGPT Assistant

Hi Everyone!
We have great news for all AI enthusiasts and ChatGPT users! The much anticipated Zobot integration with ChatGPT Assistant is now available with Plugs. 

Notes
Note:
  • SalesIQ offers native integration with OpenAI, supporting several ChatGPT models, including Assistant, under the ChatGPT card.
  • In this post, we’ll explore how to integrate ChatGPT Assistant with SalesIQ’s Zobot (Codeless Bot Builder) using Plugs
     for advanced customizations.

OpenAI has introduced 'ChatGPT Assistants' to customize GPT models as per your requirement. These Assistants work based on your data, instruction, files, functions and more, making it more susceptible to your needs. With Assistant, your SalesIQ bot can be more powereful than ever,  providing contextual assistance to your audience with data specifically exclusive for your business. 

Alert
Please ensure to have a ChatGPT Assistant in your OpenAI Platform to use this Plug.

Here's what the SalesIQ chatbot-Assistant brings to the table:
  • Targeted Responses: Your bot will be entirely specific to your business, ensuring a tailored experience for your audience, rather than relying on global data.
  • Omnichannel Availability: Bot works across all channels, including your mobile app, Website, Facebook, Instagram, WhatsApp, Telegram, and LINE.
  • Human-like conversations:  Engage your audience with natural, engaging interactions that feel human.
  • Always-on availability:  Provide 24/7 customer support with your bot, ready to engage with users anytime.


In this post, we will learn how to create a plug and connect your trained ChatGPT Assistant with your bot. 
Info
Are you new to SalesIQ? Click here to know about SalesIQ's chatbots and plugs

Plug Overview

The ChatGPT Assistant functions based on threads. Initially, you create a thread, add a message to it, and run the message to receive the Assistant's response. So, to integrate ChatGPT Assistant with the Codeless bot builder, we need two plugs.
  • Plug 1 - To create a thread (thread ID) using OpenAI API keys.
  • Plug 2 - To add a message to the thread using the thread ID, create a run and get the ChatGPT assistance's response. 


Info
Help guide to know more about how ChatGPT assistant works

How to build this Plug?

Step 1 - [Plug 1] Creating a thread for the visitor/user 
  • On your SalesIQ dashboard, navigate to Settings > Developers > Plugs > click on Add.
  • Provide your plug a name, and description, and select the Platform as SalesIQ Scripts. Here, we call this plug as ChatGPTAssistantsCreateThread
  • The first step in building the plug is defining the parameters. This plug aims to create a thread and get the thread ID as output. So, only the output parameter (threadID) is needed here. 


Copy the code below and paste it into your plug builder. Then, make the following changes. 
  • In line #2, replace your api_key (Navigate to the OpenAI developer section and click on API keys to create a new one)
  1. //ChatGPT api key
  2. api_key = "paste-your-api_key";
  3. //Header parameters
  4. headers = Map();
  5. headers.put("Authorization","Bearer " + api_key);
  6. headers.put("Content-Type","application/json");
  7. headers.put("OpenAI-Beta","assistants=v2");
  8. //This param is needed to use the V2 assistant apis
  9. // The following webhook will create a thread and return the thread id
  10. response = invokeurl
  11. [
  12. url :"https://api.openai.com/v1/threads"
  13. type :POST
  14. headers:headers
  15. ];
  16. response_json = response.toMap();
  17. thread_id = response_json.get("id");
  18. response.put("threadID",thread_id);
  19. return response;
  • Then, click Save, preview the plug and Publish it. 
Info
Reference:  OpenAI's Create a thread API

Step 2 - [Plug 2] Add a message to thread and get response 
  • From the previous plug, we will get the thread ID as output. 
  • Create a new plug, here we call this plug as ChatGPTAssistantsCreateRuns.
  • Pass the thread ID and the user/visitor input as input parameters. 
  • Once the plug is executed, we will get the ChatGPT Assistance's response, which is the output parameter. 
Input Parameters
  • Name: threadID | Type: String
  • Name: userInput | Type: String
Output Parameters
  • Name: assistantReply | Type: String


Copy the code below and paste it into your plug builder. Then, make the following changes. 
  • In line #2, replace your api_key (Navigate to the OpenAI developer section and click on API keys to create a new one.)
  • In line #3, replace your chatGPT_assistant_id (Navigate to the OpenAI developer scetion > Assistants > choose your Assistant and copy the Assistance ID.


  1. //ChatGPT api key
  2. api_key = "paste-your-api_key";
  3. chatGPT_assistant_id = "asst_4DuWZxC0RNagq0b8pnml4ZPf";
  4. //Header parameters
  5. headers = Map();
  6. headers.put("Authorization","Bearer " + api_key);
  7. headers.put("Content-Type","application/json");
  8. headers.put("OpenAI-Beta","assistants=v2");
  9. //Get the thread ID from the plug input parameters
  10. thread_id = session.get("threadID").get("value");
  11. user_input = session.get("userInput").get("value");
  12. info thread_id;
  13. info user_input;
  14. // Messages API call
  15. requestBody = Map();
  16. requestBody.put("role","user");
  17. requestBody.put("content",user_input);
  18. jsonRequestBody = requestBody.toString();
  19. // The following webhook posts a message to the conversation thread
  20. response = invokeurl
  21. [
  22. url :"https://api.openai.com/v1/threads/" + thread_id + "/messages"
  23. type :POST
  24. parameters:jsonRequestBody
  25. headers:headers
  26. ];
  27. info response;
  28. // Runs API call
  29. requestBody = Map();
  30. requestBody.put("assistant_id",chatGPT_assistant_id);
  31. jsonRequestBody = requestBody.toString();
  32. // The following runs the thread which inturn generates a response once the thread is completed
  33. response = invokeurl
  34. [
  35. url :"https://api.openai.com/v1/threads/" + thread_id + "/runs"
  36. type :POST
  37. parameters:jsonRequestBody
  38. headers:headers
  39. ];
  40. response_json = response.toMap();
  41. run_id = response_json.get("id");
  42. run_status = "queued";
  43. retry_count = {1,2,3,4,5};
  44. for each  retry in retry_count
  45. {
  46. if(run_status != "completed")
  47. {
  48. // The above executed run takes few seconds to complete. Hence a considerable time has to be left before the run is completed and the messages are fetched from the thread can be fetched. Here we wait for 3 seconds assuming the run gets complete within 3 seconds
  49. getUrl("https://httpstat.us/200?sleep=3000");
  50. response = invokeurl
  51. [
  52. url :"https://api.openai.com/v1/threads/" + thread_id + "/runs/" + run_id
  53. type :GET
  54. headers:headers
  55. ];
  56. response_json = response.toMap();
  57. run_status = response_json.get("status");
  58. }
  59. }
  60. // The following webhook fetches the messages from the thread
  61. getmsg_url = "https://api.openai.com/v1/threads/" + thread_id + "/messages";
  62. response = invokeurl
  63. [
  64. url :getmsg_url
  65. type :GET
  66. headers:headers
  67. ];
  68. info response;
  69. response_json = response.toMap();
  70. // Getting the last message from the thread messages list which is the assistant response for the user input.
  71. assistant_response = response_json.get("data").get("0").get("content").get("0").get("text").get("value");
  72. info assistant_response;
  73. response = Map();
  74. response.put("assistantReply",assistant_response);
  75. return response;
  • Then, click Save, preview the plug and Publish it. 

Step 3 - Adding plugs to the Codeless bot builder
  • Navigate to Settings > Bot > Add, provide the necessary information, and select Codeless Bot as the bot platform. You can also open an existing bot.
  • Next, click on Plugs under Action cards, select the first plug (ChatGPTAssistantsCreateThread), and provide a name to save the output (thread_id).

  • Use the visitor fields card, click save in bot context, and provide a name to store the visit
  • Then, select Plug 2 (ChatGPTAssistantsCreateRuns) and pass the value for the parameters
    • thread_id (Input) - The output of the previous Plug
    • user_input (Input) - The visitor's question/input from visitor fields card. 
    • assistant_reply (Output) - The final response from the ChatGPT assistance. 

  • Finally, use any response/input card to display the response to the visitor by typing the % to get the context variable (%assistant_reply%) in the message text box. Here, the button card is used along with the follow-up actions. 
Alert
Note: 
  • The ChatGPT Assistant APIs are still in beta, so it's better to have a fallback flow in the bot until they are stable. 
  • Manage the plug failure instances within the plug failure leg by directing your users to operators using the "Forward to Operator" card or use the "Busy response" card to get the user's question, put them on the missed chats. Additionally, you can also "Send Email" card to notify yourself about the user's inquiry. 

  • The buttons, "I've another question", is used to get next question from the visitor. Use a Go To card and route it to visitor fields card to ask next question. 

I hope this was helpful. Please feel free to comment if you have any questions. I'll be happy to help you. 

Best regards
Sasidar Thandapani

    • Recent Topics

    • Internal Fillable Contract with Zoho Writer (Before Sending to Client)

      Hi everyone, I’m trying to automate the following process in Zoho CRM and would appreciate some guidance. Process: When a Deal moves to a specific stage, CRM triggers an automation. CRM sends a contract template to an internal team member so they can
    • Update P_Leave: code: 7052 "Employee_ID": "Enter Employee ID"

      Hi, Zoho People - Update Leaves Can someone assist? ------------------------------------------------------------------------------------------ col = Collection(); col.insert("recordid":id); col.insert("Date_Check_Approval":zoho.currentdate); info zoho.people.update("P_Leave",col.toMap());
    • Prevent tracking users from specific countries

      Currently, I’m receiving many bot visits from the United States and Malaysia. I would like these visits not to be recorded in SalesIQ. I already enabled the option to exclude traffic from cloud service providers, but I’m still receiving bot visits. Ideally,
    • Print a document from Zoho Writer via Zoho Creator

      If i use the code below i can get writer to create a new document or email it to me but i want to be able to print it directly from the browser and not have to send it via email and then print. Below is the code im using. Attached options form zoho writer
    • Es posible cambiar el lenguaje de los modulos del ASAP?

      Es posible cambiar el lenguaje de estos textos? Tengo Zoho configurado en español pero aun así me muestra estos textos en ingles:
    • System Components menu not available for Tablet to select language

      I have attached a screenshot of my desktop, mobile, and tablet menu builder options. I am using 2 languages in my application. Language Selection is an option under the System Components part of the menu, but only for my desktop and phone(mobile). My
    • Using workflows to automatically set classification of new tickets

      Hello, I am trying to use a workflow to set a classification for a new ticket that is created via an email coming into my desk department. The workflow is working fine if I create a ticket from within desk, however if a ticket is emailed in then this
    • Text/SMS With Zoho Desk

      Hi Guys- Considering using SMS to get faster responses from customers that we are helping.  Have a bunch of questions; 1) Which provider is better ClickaTell or Screen Magic.  Screen Magic seems easier to setup, but appears to be 2x as expensive for United States.  I cannot find the sender id for Clickatell to even complete the configuration. 2) Can customer's reply to text messages?  If so are responses linked back to the zoho ticket?  If not, how are you handling this, a simple "DO NOT REPLY" as
    • Default/Private Departments in Zoho Desk

      1) How does one configure a department to be private? 2) Also, how does one change the default department? 1) On the list of my company's Zoho Departments, I see that we have a default department, but I am unable to choose which department should be default. 2) From the Zoho documentation I see that in order to create a private department, one should uncheck "Display in customer portal" on the Add Department screen. However, is there a way to change this setting after the department has been created?
    • Show unsubscribed contacts ?

      Hello, I would like to display the unsubscribed contacts. Unfortunately, I do not have this subscription type as described in the documentation (https://help.zoho.com/portal/en/kb/marketing-automation-2-0/user-guide/contacts/contact-management/articles/subscription-type-24-1-2024#Subscription_Type_field.)
    • Can Zoho Marketing Automation send OTP codes via WhatsApp during user registration?

      The flow I would like to implement is: A user signs up in the mobile app and enters their phone number. The system generates a one-time verification code (OTP). The OTP is sent to the user via WhatsApp message. The user enters the code in the app to confirm
    • What's New in Zoho Inventory | Q2 2025

      Hello Customers, The second quarter have been exciting months for Zoho Inventory! We’ve introduced impactful new features and enhancements to help you manage inventory operations with even greater precision and control. While we have many more exciting
    • "Spreadsheet Mode" for Fast Bulk Edits

      One of the challenges with using Zoho Inventory is when bulk edits need to be done via the UI, and each value that needs to be changed is different. A very common use case here is price changes. Often, a price increase will need to be implemented, and
    • Cloning Item With Images Or The Option With Images

      Hello, when I clone an item, I expect the images to carry over to the cloned item, however this is not the case in Inventory. Please make it possible for the images to get cloned or at least can we get a pop up asking if we want to clone the images as
    • ZOHO BOOKS - RECEIVING MORE ITEMS THAN ORDERED

      Hello, When trying to enter a vendor's bill that contains items with bigger quantity than ordered in the PO (it happens quite often) - The system would not let us save the bill and show this error: "Quantity recorded cannot be more than quantity ordered." 
    • Stock count by bin location

      Is there a configuration to make a stock count by bin or area and not by product. these is useful to manage count by area Regards
    • Server-based Appication API access for Social, Sites, Flow, Pages.

      Hello, I am trying to hook up API access for a number of apps and I have hit a wall trying to add these scopes to the API feed. We cannot find the correct way to list the scope for these Zoho apps; Social, Sites, Flow, Writer. Error on web-page comes
    • Feature Request: "Send Invitation" Toggle for Events

      I am writing to request a critical "Quality of Life" update for the Activities module. Currently, adding people to the Participants field in an Event triggers an automatic email invitation/acceptance tracking with no way to opt-out. For general events
    • Zoho Survey: Bulk Exporting Raw Data (CSV/Excel) from 100+ Individual Survey Projects

      Hi Zoho Community, I am currently managing a 360-degree evaluation process that involves 100+ individual survey projects (one separate survey for each employee being evaluated). I need to download the raw response data (CSV or Excel) for all 100 surveys.
    • Zoho Survey – Page Skip Logic Not Working

      Hi everyone, I'm experiencing an issue with the page skip logic in Zoho Survey. Last week, it was working fine, and I haven’t changed anything in the settings. However, today the skip logic is not working at all. I also tried testing it with different
    • CRM x WorkDrive: File storage for new CRM signups is now powered by WorkDrive

      Availability Editions: All DCs: All Release plan: Released for new signups in all DCs. It will be enabled for existing users in a phased manner in the upcoming months. Help documentation: Documents in Zoho CRM Manage folders in Documents tab Manage files
    • Anyone worked out how to export or screengrab a full heatmap?

      I'd love to be able to include a copy of a heatmap in a report but can't work out how to grab the whole thing as there doesn't appear to be an export function? Thanks in advance.
    • Introducing Built-in Telephony in Zoho Recruit

      We’re excited to introduce Built-in Telephony in Zoho Recruit, designed to make recruiter–candidate communication faster, simpler, and fully traceable. These capabilities help you reduce app switching, handle inbound calls efficiently, and keep every
    • Sender Email Configuration Error.

      Hello Team, Hope you are all doing well. We are in the process of creating the Zoho FSM environment in the UAE. When we try to add the sender email address “techsupportuae@stryker.com”, we receive the error message: “Error occurred while sending mail
    • Auto-publish job openings on my Zoho Recruit Careers Website

      I have developed a script using the Zoho Recruit API that successfully inserts new jobOpening records to my Zoho Recruit website, but my goal is to auto-publish to the Careers Website. The jobOpening field data shows two possible candidates to make this
    • [Free webinar] Custom domains for portals in Zoho Creator - Creator Tech Connect

      Hello everyone, We’re excited to invite you to another edition of the Creator Tech Connect webinar. About Creator Tech Connect The Creator Tech Connect series is a free monthly webinar featuring in-depth technical sessions designed for developers, administrators,
    • Remove my video

      Hi, How can I remove my video so that I don't have to see myself. It's weird so I always remove my own video from what I see but cannot find this feature here. Thanks!
    • Marking a meeting 'done'.

      I would like to somehow mark a meeting 'done' and placed under the contact's page rather than deleting it and having no record of it. Am I missing a button that does this?
    • Add Lookup Field in Tasks Module

      Hello, I have a need to add a Lookup field in addition to the ones that are already there in the Tasks module. I've seen this thread and so understand that the reason lookup fields may not be part of it is that there are already links to the tables (
    • Super Admin Logging in as another User

      How can a Super Admin login as another user. For example, I have a sales rep that is having issues with their Accounts and I want to view their Zoho Account with out having to do a GTM and sharing screens. Moderation Update (8th Aug 2025): We are working
    • Cannot find zpuid for Zoho Projects user

      I'm using the Zoho Projects v3 API to create a task. The task is created successfully, but in order to assign the task owner, the "Create a Task" API also requires the zpuid of the task owner. Unfortunately I cannot find any user-related API calls that
    • Allocating inventory to specific SO's

      Is there a way that allocate inventory to a specific sales order? For example, let's say we have 90 items in stock. Customer 1 orders 100 items. This allocates all 90 items to their order, and they have a back order for the remaining 10 items which could
    • Incorrect Functioning of Time Logs API (Version 3)

      We need to fetch the list of time logs for each task for our company internal usage. We are trying to achieve it by using the next endpoint: https://projects.zoho.com/api-docs#bulk-time-logs#get-all-project-time-logs Firstly, in the documentation the
    • Partial payments for retainer invoices

      When a customer does not pay the entire retainer invoice there is no way to apply a partial payment. PLEASE add this function.
    • Can I export to PDF in Zoho Learn

      I have seen help pages where export to pdf options are available but I do not see that option available from the application. I see that exprt is available in my free trial version but that is only to html pages. I need to be able to export my manuals
    • Service line items

      Hello Latha, Could you please let me know the maximum number of service line items that can be added to a single work order? Thanks, Chethiya.
    • Sending emails via Books

      Anyone else getting similar problems recently ??..... Hi, Your message to the following recipient was not delivered. Please find the details below.  Bounce Details: Bounced Address : someone@google.com Bounce Reason : other ; Status : 5.0.0 (undefined status) ; Daignostic-Code : smtp;542 someone@google.com Rejected ; Bounced Time : Sep 05, 2017 06:37 PM BST Regards, Zoho Team The email addresses were fine only a few days ago but are now being rejected ?
    • PDF Generator Upgrade

      Hi Team, What will happen if I don't make any changes for existing template. Zoho just ask us upgrade but haven't tell the benefit. Zoho Corporation
    • No Need To Fix Something That Is Working

      Zoho Books is a great financial tool which helps businesses to become more efficient and productive with day-to-day operations. As such, every change, upgrade, improvement needs to be carefully thought before implemented in the software and I'm sure Zoho
    • Total Cost in reports showing zero

      The image below shows my issue. The column Total Cost should show the cost to our company based on hours logged and the employee's rate. For instance, if the person working on Subtask 1 is paid 20/hr, then Total Cost should display $160 ($20x8 logged
    • Next Page