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

    • AI Bot and Advanced Automation for WhatsApp

      Most small businesses "live" on WhatsApp, and while Bigin’s current integration is helpful, users need more automation to keep up with volume. We are requesting features based on our customer Feedbacks AI Bot: For auto-replying to FAQs. Keyword Triggers:
    • Setting total budget hours for a specific project

      Hi there, I work on a lot of projects that have fixed budget hours. Is there a way to enter the total budgeted hours so i can track progress and identify when hours have been exceeded. I see in the projects dashboard there is a greyed out text saying
    • Clone entire dashboards

      If users want to customize a dashboard that is used by other team members, they can't clone it in order to customize the copy. Instead they have to create the same dashboard again manually from scratch. Suggestion: Let users copy the entire dashboard
    • Introducing Formula Fields for performing dynamic calculations

      Greetings, With the Formula Field, you can generate numerical calculations using provided functions and available fields, enabling you to derive dynamic data. You can utilize mathematical formulas to populate results based on the provided inputs. This
    • Getting started with Zoho PDF Editor

      Hello users, If you are new to Zoho PDF Editor or aren't sure of its full potential, then this article is for you. Zoho PDF Editor is a free online PDF editing tool, that allows you to upload and edit PDFs, insert text and images, add fillable and e-signature
    • Mercury Bank Integration

      Mercury Bank is a fintech company in the US that is quite popular with startups, e-com companies, and other businesses. https://docs.mercury.com/reference/welcome-to-mercury-api Unlike most traditional banks, they have a full-featured API that allows
    • Zoho Projects - Cloning a task does not trigger task workflow when created

      Hello! I have a Project where my team uses a set of tasks from a tasklist as templates, so we could simply clone it and drag it to another list in kanban view to avoid creating a new one from scratch. The process works well, but after cloning it the new
    • Purchase Orders not in sequence

      I am unable to sort by Purchase Order Numbers. I can only sort by date; however, the PO numbers aren't in the order they were entered. This was not the case prior to today.
    • Date/time displayed in ZohoCRM does not match date/time of entries in ZohoForm

      Hello there, we use a ZohoForm as a worksheet, i.e. users use it to track start time, break and stop time for every working day. The ZohoCRM org time zone is set on GM -4, so is the Time Zone in the Date&Time section in ZohoForm (see attachment). Despite
    • Update Existing Records greyed out in Free Version

      Trying to update records from an Excel sheet, and not getting the option to update. Only option is to add as new accounts. All documentation I can see says update should be an option! Accounts, Leads, Contacts, all the same.
    • Dynamically Populate Picklist Values from Another Module Using Client Script

      I am working in Zoho CRM and trying to dynamically populate a picklist field in the Partners module using values stored in another custom module. I have two modules: 1. Partners Module Field: Partner_Type_Pick Field Type: Picklist 2. Partners_Type Module
    • Add zoho calendar to google calendar

      Hi I keep seeing instructions on how to sync Zoho CRM calendar with google calendar but no instructions on how to view Zoho calendar in my google calendar.
    • Zoho Community Digest : Jan 2026 | Part 1

      Hello Everyone! Staying in the loop with Zoho's latest product updates and features across the vast Zoho Community Forums can be a real challenge. We get it. With over 50+ applications, each with its dedicated forum, it's easy to miss out on important
    • World date & time format

      Hello, Is there a timeline to get the worldwide used date and time format ? I mean not the american one... I mean day month year, and 24 hours clock. Regards
    • Nimble enhancements to WhatsApp for Business integration in Zoho CRM: Enjoy context and clarity in business messaging

      Dear Customers, We hope you're well! WhatsApp for business is a renowned business messaging platform that takes your business closer to your customers; it gives your business the power of personalized outreach. Using the WhatsApp for Business integration
    • Conditional layouts - support for multi-select picklists

      Hi, The documentation for conditional layouts says the following: "Layout Rules cannot be used on the following field types: Auto Number Lookup Multi Select Lookup User Lookup Formula File Upload Multi Line" I have a custom module with a multi-pick list
    • Dont want to list inactive items.

      If an item is made inactive, there is no point in showing it in the item list. Please provide an option to hide all inactive items in 'Preferences'. 
    • Client Script Not Working When Field is Set by Workflow

      Problem Context: I have implemented a client script in the Cases module that automatically assigns commands based on the value of the Priority field. The script functions correctly when the Priority field is manually set by a user through the form. Observed
    • Integration of CRM and Recruit

      hi team, Is it possible to sync deals <> job openings from only 1 pipeline? My configuration of CRM has pipeline for each business unit, so I will have all data in the CRM system. body leasing and recruitment is one BU (hence 1 pipeline) - can I sync
    • integrating Zoho CRM vendors with Zoho projects

      In most of our projects we collaborate with our Vendors. Being able to integrate only Accounts and not Vendors from CRM, is a huge limitation for our perspective and needs. We would really love to see this feature in the CRM-Projects integration.
    • Zoho Creator Workshops 2026—Europe & UK | Coming to a city near you!

      Hello everyone! We're excited to announce the Zoho Creator Workshop Series 2026, coming to cities across Europe and the United Kingdom this year! Whether you're looking to explore the intermediate-to-advanced capabilities of Creator or you're a seasoned
    • Number 9 envelopes for invoice printing

      I email and print invoices. Being new to Zoho and coming from QB, we did both as we have a more traditional So in Zoho i want to do the same using Number 9 envelopes. These have both a return window and mail to windoow see attached image. Im just looking for best suggestions on how to get a ZOHO invoice to work, so I can mail my invoices...
    • Zoho Books/Square integration, using 2 Square 'locations' with new Books 'locations'?

      Hello! I saw some old threads about this but wasn't sure if there were any updates. Is there a way to integrate the Square locations feature with the Books locations feature? As in, transactions from separate Books locations go to separate Square locations
    • Open Sans Font in Zoho Books is not Open Sans.

      Font choice in customising PDF Templates is very limited, we cannot upload custom fonts, and to make things worse, the font names are not accurate. I selected Open Sans, and thought the system was bugging, but no, Open Sans is not Open Sans. The real
    • Add Reporting feature to display variance/change columns when comparing periods

      When running reports to compare periods (for example, Profit and Loss comparing current year to previous), I would like to be able to display variance columns in both (a) amount or (b) percentage.
    • Payroll and BAS ( Australian tax report format )

      Hello , I am evaluating Zoho Books and I find the interface very intuitive and straight forward. My company is currently using Quickbooks Premier the Australian version. Before we can consider moving the service we would need to have the following addressed : 1.Payroll 2.BAS ( business activity statement ) for tax purposes 3.Some form of local backup and possible export of data to a widely accepted format. Regards Codrin Mitin
    • Invalid scope choice: Workdrive integration in CRM

      Bug: There is an invalid option in the permission choices for Workdrive integration in CRM. If the entry "WorkDrive.teamfolder.CREATE" is selected, it will return a message indicating invalid OAuth scope scope does not exist.
    • What's New - February 2026 | Zoho Backstage

      February 2026 brings a major new addition and a collection of enhancements across Zoho Backstage. We thought about writing a long introduction, but the updates in this release make a strong case on their own. So we’ll skip the buildup and dive straight
    • Attaching files to emails within CRM Deals.

      Hello, We have recently started using the extension "Workdrive for CRM" (Related List) to view/store our documents for each Deal, instead of using Attachments. Overall it feels like a better way to go but the user experience is not so great when it comes
    • 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.
    • Establishing Relationships among contacts/leads with Reciprocal

      Is there any way to create a relationship between contacts and leads and be able to go into just one of the files and have it reciprocate the entry in the other file? For example, if I have two people say John and Jane Smith who are husband and wife.
    • Placeholder for Agent Signature in Email Templates

      Dear Zoho Team, I hope this message finds you well. We currently face a limitation when designing email templates in Zoho Desk. While we can create email templates and include a footer at the end, the agent signature is always appended by default at the
    • Custom View and Custom Fields on Zoho Books

      Hi, I have some custom fields on Estimates and Invoices. I also use Custom Views so I can have a lot of information at a glance. I want to include my custom fields as columns in my custom views of estimates / invoice, but it looks like is not possible.
    • %PaymentLink%

      Does not work. Software creates a BAD link. ....and yes payment options are turned on. Link on the invoice pdf once opened will work but this template is a joke.
    • 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
    • Where to show Customization Field ?

      Dear Sir, I have made some New Field in Item Field Customisation. Now I don't require that field in Estimate, Sales Orders etc. I just wants that field in Sales Invoice to Show/Hide... Is that possible ?
    • What's New in Zoho Analytics - February 2026

      Hello Users! We're back with another round of updates for Zoho Analytics. This month's release focuses on giving you greater flexibility in how you visualize, manage, and act on your data - with new features like custom visualizations, remote MCP server,
    • Zoho Books (and other Finance Suite Apps) - Clickable Item Name on Invoices and Reports

      Hi Zoho Books team, It would be really helpful if the Item Name on Reports were clicable to take me to the item. The same on Invoices, often I am looking at an invoice and I want to look at the deails of a product. A link here would be helpful to jump
    • ZOHO Reports are taking longer time to get refresh

      Hi Team, Since last few days, I'm facing issues in getting updated reports. For eg: right after making an expense entry or even posting a journal, it is taking longer then expected for the updated reports. Refer below: "You are viewing the report that
    • Display actual mileage on an invoice

      My users are creating expenses in Zoho expense. For example, they expense 10 miles and get paid 7 dollars (10 miles * IRS rate of .70). If I look at the expenses in Zoho Books, it does show them at 10 miles at .70 cent When I add these expense to an invoice
    • Next Page