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.
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.
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.
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.
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)
- //ChatGPT api key
- api_key = "paste-your-api_key";
- //Header parameters
- headers = Map();
- headers.put("Authorization","Bearer " + api_key);
- headers.put("Content-Type","application/json");
- headers.put("OpenAI-Beta","assistants=v2");
- //This param is needed to use the V2 assistant apis
- // The following webhook will create a thread and return the thread id
- response = invokeurl
- [
- url :"https://api.openai.com/v1/threads"
- type :POST
- headers:headers
- ];
- response_json = response.toMap();
- thread_id = response_json.get("id");
- response.put("threadID",thread_id);
- return response;
- Then, click Save, preview the plug and Publish it.
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.
- //ChatGPT api key
- api_key = "paste-your-api_key";
- chatGPT_assistant_id = "asst_4DuWZxC0RNagq0b8pnml4ZPf";
- //Header parameters
- headers = Map();
- headers.put("Authorization","Bearer " + api_key);
- headers.put("Content-Type","application/json");
- headers.put("OpenAI-Beta","assistants=v2");
- //Get the thread ID from the plug input parameters
- thread_id = session.get("threadID").get("value");
- user_input = session.get("userInput").get("value");
- info thread_id;
- info user_input;
- // Messages API call
- requestBody = Map();
- requestBody.put("role","user");
- requestBody.put("content",user_input);
- jsonRequestBody = requestBody.toString();
- // The following webhook posts a message to the conversation thread
- response = invokeurl
- [
- url :"https://api.openai.com/v1/threads/" + thread_id + "/messages"
- type :POST
- parameters:jsonRequestBody
- headers:headers
- ];
- info response;
- // Runs API call
- requestBody = Map();
- requestBody.put("assistant_id",chatGPT_assistant_id);
- jsonRequestBody = requestBody.toString();
- // The following runs the thread which inturn generates a response once the thread is completed
- response = invokeurl
- [
- url :"https://api.openai.com/v1/threads/" + thread_id + "/runs"
- type :POST
- parameters:jsonRequestBody
- headers:headers
- ];
- response_json = response.toMap();
- run_id = response_json.get("id");
- run_status = "queued";
- retry_count = {1,2,3,4,5};
- for each retry in retry_count
- {
- if(run_status != "completed")
- {
- // 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
- getUrl("https://httpstat.us/200?sleep=3000");
- response = invokeurl
- [
- url :"https://api.openai.com/v1/threads/" + thread_id + "/runs/" + run_id
- type :GET
- headers:headers
- ];
- response_json = response.toMap();
- run_status = response_json.get("status");
- }
- }
- // The following webhook fetches the messages from the thread
- getmsg_url = "https://api.openai.com/v1/threads/" + thread_id + "/messages";
- response = invokeurl
- [
- url :getmsg_url
- type :GET
- headers:headers
- ];
- info response;
- response_json = response.toMap();
- // Getting the last message from the thread messages list which is the assistant response for the user input.
- assistant_response = response_json.get("data").get("0").get("content").get("0").get("text").get("value");
- info assistant_response;
- response = Map();
- response.put("assistantReply",assistant_response);
- 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.
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
Call transcrition working for ringcentral?
I don't see anything about what telephony providers can be used. The Zoho support person A said that RingCentral isn't supported. Zoho support person B said that it works, just make sure the call recording link works. Excellent instructions here: Call
What is syntax to call creator function (or trigger a creator workflow) from CRM deluge?
What is syntax to call creator function (or trigger a creator workflow) from CRM deluge?
WhatsApp and Zoho Creator Integration
How we have integrate WhatsApp App with Zoho Creator without using external application ?
Improve Creator Calendar Report
Please can you improve the Creator Calendar Report General There is no way to highlight certain days, for example weekends or public holidays. There is no way to hide certain days, for example weekends. There is no way to modify the day header, it just
Important updates to Zoho CRM's email deliverability
Last modified on: Jul 24, 2024 These enhancements are released for all users across all data centers. Modified on: Oct 30, 2023 Organisations that are in the Enterprise and above editions of Zoho CRM, and have not authenticated their email-sending domains
Custom modules not showing in developer console
I'm trying to create a custom summing function for a custom module I made in my CRM. When I go to create the function, my module isnt showing up. Do I need to share the custom moldule with my developer console or something of the like?
Chart with Filtered Data vs Unfiltered Data
I am looking to create a chart view that displays the full data set vs a subset of the data filtered by user filter. However I do not seem to find any method by which to exclude a plot from the applied filter or any other method by which to display the
Meetups Gratuitos Junio 2024 - Profundiza en las funcionalidades de tu Zoho CRM
Este junio, aprende a sacar el máximo provecho de tu Zoho CRM en la segunda edición de los Zoho Meetups 2024. Los días 18 a 21 de junio, Zoho organiza los Meetups gratuitos para usuarios de Zoho CRM en Valencia, Barcelona, Madrid y Sevilla, donde expertos
How to get the Dashboard page to be the first page when you open the app
So when it opens on a tablet or phone it opens on the welcome page, thanks.
Integration between Zoho CRM and Zoho WorkDrive
I'd like to search Zoho for an invoice I've added as an attachment (pdf) to an account. The name of the invoice is 1388-advertiserx-July.pdf - but I can't find it using the search function for any of these terms: 1388 1388-advertiserx 1388-advertiserx-July.pdf
Tip #17: How to mandate partial payment for your appointments
When you require partial payments during the booking process, customers can only schedule with you after paying a certain amount in advance. This deposit acts as a commitment between both parties. Apart from that, it has many more advantages. Benefits
Why option for 'include form submission in the body of the email' check box is missing
Hi In all our forms we have configured an <Email Notification> (<Rules> <Form Rules>) In some forms, there is an option to <include form submission in the body of the email> in the <Additional Options> section, however, this option is not available in
Mozilla Vault extension will not Unlock even once.
I have been using the Vault extension in Chrome based browsers for years, yet after installing the Mozilla Extension in Firefox, it will not unlock. Initially it did redirect me to log into my account, and then enter the master password. However, it did
Unable to Download CRM Contact Data: WorkDrive Integration Issues
## Problem Description We need to let users download contact information from CRM as CSV files to their local computers. Since we couldn't implement a direct download option, we're trying to use WorkDrive as a workaround - but we're encountering issues
Sort mail by name and subject
I don't see sort function on columns FROM and Subject. I see only sort functio by date. Could add it ?
Zoho Creator monthly roundup - September 2024
Hello all, We're back with an exciting set of new features and enhancements that will elevate your Creator experience even further. In case you missed it, we’ve recently revamped our Product Roadmap page, now with a refreshed design and showcasing all
Kiosk Studio Session #1: View paid customers in the same industry
Update | 15 Oct 2024: Session #2 is now available here! Hello everyone! We're excited to launch our new series of posts on Kiosk Studio today. Called Kiosk Studio Sessions , these posts will be packed with actionable ideas to help you get the most out
Issues hosting Zoho Desk Web Form on SharePoint and/or Power BI
Zoho Desk onboarding support has no experience with embedding their web form in either SharePoint or Power BI. Microsoft states that SharePoint and Power BI only support iframe HTML. And unfortunately, the web form embed code that Zoho generates is not
"Send with Zoho Sign" broken
Our company uses hyphens in our file name conventions. Our users have been sending the files from other modules with the "Send with Zoho Sign" shortcut in the upper right buttons. Since around June 10, 2024, this stopped working. Our users can send the
Not able to change colors help center
Hi. How can I change the orange color in the help center? You can change everything besides this font color And how can I remove the part on the bottom?
Transform Numeric Values using st, nd, rd, th or Convert Numerals to Ordinal Form - Deluge
Please Use this sample Code This_Day_Date = zoho.currentdate.toString("dd"); value1 = "th"; if(This_Day_Date.right(1) ="1" && This_Day_Date != "11") { This_Day_Date = This_Day_Date+" "+"st"; } else if ( This_Day_Date.right(1) = "2" && This_Day_Date !=
Kaizen #166 - Handling Query Variables in Zoho CRM
Hello, Code Enthusiasts! Welcome to another week of Kaizen! This week, we'll dive into handling variables in Zoho CRM Queries and see how they can be deployed in Kiosk to dynamically retrieve data. This technique is especially useful for integrating data
Automate User Invitations on Zoho Desk with API
Automate User Invitations on Zoho Desk with API Hello Team, We are excited to announce that you can now automatically invite users to the Zoho Desk portal using the API! ### How It Works For example, when a contact is created in Zoho Desk and you enable
Is there a way to add clients who don't have organisation in Zoho Books/Payroll/Expense ?
The Zoho Practice software is only allowing a total of 15 such clients who are not organisations in Zoho Books/Payroll/Expense. i.e. 5 organisation in each of the software by creating a new organization for them and adding the accountant as the admin
Email with attachments saving attachments into Zoho CRM from Zoho Mail
Hi, I get a lot of emails from prospective clients asking if we would bid their project. Those projects usually have many documents associated with them that I link to. I would like to have those documents be saved as an attachment in my Potential or Contact or Account. I don't see a way to do that that isn't multi-step. As of now I do the following: 1.) Open email 2.) If email sender isn't in my Zoho CRM database I enter them creating a Potential 3.) I download the attachment and save it to a different
Fixed assets recording
Hello there, I recorded a bill for a vendor contain (Computer) so the PC is a fixed assets, do I need to do a manual journal to include this PC under the fixed assets category (furniture & equipment)? If yes, please take me through the manual journal
Multi-Select lookup field has reached its maximum??
Hi there, I want to create a multi-select lookup field in a module but I can't select the model I want the relationship to be with from the list. From the help page on this I see that you can only create a max of 2 relationships per module? Is that true?
Zoho Sheet-Pulling in Data
I have a module where we track POs, Bills etc (its easier for us this way). In this PO Module, we have a task related to a Job/Deal and various fields for costs. A Supplier on a Job might have several POs in this module for the job. I want to generate
Can't get ZFS file ID of a field via specific module record
I have a `fileupload` field on a custom module that I need to replace the file for but I don't know how to get the ZFS ID from the module record. # Getting the current fileupload GET https://www.zohoapis.eu/crm/v7/<MODULE>/<ID> # Response { data: [{ //
Contemplating moving my site from WordPress to Zoho Sites
Hi Everyone, We currently find ourselves in a situation where we ant to review and update our current sites content. We are small business owners, not developers. We currently use a wide range of Zoho products. We sometimes think about the possibility of either moving or just starting from scratch on Zoho Sites. I would like to know if anyone has done this and of course the things that need to be considered. We have spent quite a bit of time getting our current site positioned organically and I guess
Multiple Salesperson against an invoice
Hello, Against a particular invoice, we have multiple sales people working. The reason we combine the invoice is becuase we are an exporter and often consolidate cargo for our customer to save them freight costs. How do I capture the contribution of each
Allow a brand to connect multiple facebook pages at the same time
Our company have multiple facebook pages to represent, every branch, right now we can only link one facebook page, so we can only recive messages from one branch. It would be nice to be able to connect all pages.
5名限定 課題解決型ワークショップイベント Zoho ワークアウト開催のお知らせ (12/19)
ユーザーの皆さま、こんにちは。Zoho ユーザーコミュニティチームの藤澤です。 12月開催のZoho ワークアウトについてお知らせします。 ※定員に達したため、受付を終了しました。 ━━━━━━━━━━━━━━━━━━━━━━━━ Zoho ワークアウトとは? Zoho ユーザー同士で交流しながら、サービスに関する疑問や不明点の解消を目的とした「Zoho ワークアウト」を開催します。 Zoho サービスで完了させたい設定やカスタマイズ、環境の整備など……各自で決めた目標達成に向け、 他の参加者と同じ空間で作業を行うイベントです。先輩ユーザーや他の参加者と意見交換をしながら集中して作業に取り組むことが可能です。
Whatsapp reply not reflected under Tickets for offline agent
Hi, We are encountering a situation where WA response from customer is not reflected under tickets (if the agent handling the case previously is not active due to off day/ MC). The ticket will remain in the offline agent's queue until agent is back to
Missing Folders on iPhone Zoho Mail
Under mailboxes on my iPhone, I don't have an inbox, sent folder, deleted photo, etc. See pics.
Select CRM Custom Module in Zoho Creator
I have a custom module added in Zoho CRM that I would like to link in Zoho creator. When I add the Zoho CRM field it does not show the new module. Is this possible? Do i need to change something in CRM to make it accesible in Creator?
Send Whatsapp with API including custom placeholders
Is is possible to initiate a session on whatsapp IM channel with a template that includes params (placeholders) that are passed on the API call? This is very usefull to send a Utility message for a transactional notification including an order number
Increase Round Robin Scheduler Frequency in Zoho Desk
Dear Zoho Desk Team, We hope this message finds you well. We would like to request an enhancement to the Round Robin Scheduler in Zoho Desk to better address ticket assignment efficiency. Current Behavior At present, the Round Robin Scheduler operates
Separate One-Time Mentions from Ongoing Ticket Following in Zoho Desk
Dear Zoho Desk Support Team, We are writing to request an enhancement to the mention functionality within Zoho Desk. Currently, when an agent is mentioned in a ticket, they receive notifications for all subsequent activity on that ticket, similar to being
Mass update Accounts in Zoho Desk
We used the integration feature to bring in all of our accounts from Zoho CRM. While all of the names and links are in place, on the Zoho Desk side the email, phone, website, and address fields are blank. By going into each account I can select "Update
Next Page