# **Zoho SalesIQ HITL (Human-in-the-Loop) Integration** This integration allows Botpress to **seamlessly escalate conversations** from a chatbot to a live agent in **Zoho SalesIQ**. When a user requests human assistance, the bot initiates a **new conversation** in Zoho SalesIQ and enables real-time communication between the user and a human agent. ### **How It Works** 1. **Conversation Start**: - When a user requests live agent support, the bot calls **Zoho SalesIQ's Open Conversation API** to create a new session. - The **Botpress HITL interface** keeps track of the conversation ID. 2. **Message Handling**: - User messages are forwarded to the **Zoho SalesIQ Send Message API**, allowing the visitor to communicate with the assigned agent. 3. **Operator Events Tracking**: - The integration listens for **Zoho SalesIQ webhook events**, such as: - **Agent Assignment (`operatorAssignedUpdate`)** - **Conversation Resolved (`operatorConversationComplete`)** - **Missed Conversations (`operatorConversationMissed`)** - **Agent Messages (`operatorSendMessage`)** 4. **Closing Conversations**: - Once an agent **resolves the conversation**, Botpress will update the session and notify the chatbot. --- # Zoho SalesIQ Integration Setup Guide ### **[Loom video walk through setting up the OAuth configuration.](https://www.loom.com/share/d3c758e372e54a32b4f29d7da44af1ce?sid=38c81c81-486e-4a48-bfb1-941b02d052d1)** ### ## Step 1: Create a Zoho Developer Account 1. Open the Zoho API Console: [https://api-console.zohocloud.ca/add?client_type=ORG](https://api-console.zohocloud.ca/add?client_type=ORG) 2. Sign in or create a Zoho Developer account if needed. 3. Create a new OAuth client. 4. Set the **Redirect URI** to your **Botpress webhook URL**. ## Step 2: Generate an Authorization Code Ensure you use the **correct region URL** for OAuth authentication. #### **Zoho Accounts Domains:** | Region | Accounts URL | |---------------|----------------------------------| | US | `https://accounts.zoho.com` | | AU | `https://accounts.zoho.com.au` | | EU | `https://accounts.zoho.eu` | | IN | `https://accounts.zoho.in` | | CN | `https://accounts.zoho.com.cn` | | JP | `https://accounts.zoho.jp` | | SA (Saudi Arabia) | `https://accounts.zoho.sa` | | CA (Canada) | `https://accounts.zohocloud.ca` | Construct the following authorization URL, replacing placeholders with your actual values: ```text https://accounts.zohocloud.ca/oauth/v2/org/auth?response_type=code &client_id=YOUR_CLIENT_ID &scope=SalesIQ.Conversations.ALL,SalesIQ.apps.read &redirect_uri=YOUR_REDIRECT_URI &access_type=offline &state=123 ``` - Replace `YOUR_CLIENT_ID` with your **Zoho Client ID**. - Replace `YOUR_REDIRECT_URL` with your **Botpress webhook URL**. - Ensure the scope is set to `SalesIQ.Conversations.ALL`. ### Get Authorization Code 1. Open the modified URL in a browser. 2. Click **Accept** when prompted. 3. Copy the **authorization code** from the redirected URL, which will look something like: ```text https://webhook.botpress.cloud/2fca97ae-3078-4287-87a2-957e7f68157a?state=123&code=1005.4e8ee2431c3713671170956c8f8ed585.8ac5720917a810e6d447df63d2b63aef&location=ca&accounts-server=https%3A%2F%2Faccounts.zohocloud.ca ``` 4. The `code` parameter (`1005.4e8ee2431c...`) is your **authorization code**. ## Step 3: Exchange Authorization Code for Access Token Run the following cURL command, replacing placeholders with your actual credentials: ```sh curl -X POST "ACCOUNTS_URL_REGION/oauth/v2/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "code=YOUR_CODE" \ -d "grant_type=authorization_code" \ -d "client_id=YOUR_CLIENT_ID" \ -d "client_secret=YOUR_CLIENT_SECRET" \ -d "redirect_uri=YOUR_REDIRECT_URI" \ -d "scope=SalesIQ.Conversations.ALL,SalesIQ.apps.read" ``` - Replace `YOUR_CODE` with the **authorization code** from Step 2. - Replace `YOUR_CLIENT_ID`, `YOUR_CLIENT_SECRET`, and `YOUR_REDIRECT_URL` with your actual values. ## Step 4: Store Credentials in Your Integration After making the request, you will receive a response containing an **access token** and a **refresh token**. Store the following credentials in your integration configuration: - **Client ID** - **Client Secret** - **Access Token** - **Refresh Token** ## Step 5: Retrieve Required Zoho IDs To fully integrate with **Zoho SalesIQ**, you need to gather the following details: ### 1. Get Your Screen Name - Visit your **Zoho SalesIQ Home Page**. [https://salesiq.zohocloud.ca/](https://salesiq.zohocloud.ca/) - Your **Screen Name** is displayed on this page in the URL at the top of your browser, for example, envyroinc is the screen name here https://salesiq.zohocloud.ca/envyroinc/mychats. ### 2. Get Your Department ID 1. Go to **Settings > Departments** in **Zoho SalesIQ**. 2. Click on the correct department. 3. The **Department ID** is in the URL: ```text https://salesiq.zohocloud.ca/envyroinc/settings/departments/edit/6338000000002024 ``` - Example **Department ID**: `6338000000002024` ### 3. Get Your App ID 1. Go to **Settings > Brands** in **Zoho SalesIQ**. 2. Click on the correct brand. 3. The **App ID** is in the URL: ```text https://salesiq.zohocloud.ca/envyroinc/settings/brands/6338000000002238 ``` - Example **App ID**: `6338000000002238` ## Step 6: Final Integration Configuration Setup Enter the following details into your integration configuration: ✅ **Screen Name** ✅ **App ID** ✅ **Department ID** # How to Set Up a Webhook in SalesIQ for Botpress Follow these steps to integrate your SalesIQ account with Botpress using webhooks. ## Step 1: Navigate to Webhooks in SalesIQ 1. **Log in** to your SalesIQ account. 2. Click on **Settings** in the sidebar. 3. Scroll down and select **Webhooks**. ## Step 2: Add a New Webhook 4. Click **Add a New Data Modifications Webhook**. 5. Select the **correct brand/organization** for which you want to configure the webhook. ## Step 3: Configure the Webhook 6. In the **URL to be invoked** field, **copy and paste** your Botpress webhook URL. ## Step 4: Select Webhook Events 7. Check the following events to be associated with the webhook: - `conversation.attender.updated` - `conversation.missed` - `conversation.operator.replied` - `conversation.completed` ## Step 5: Save Your Webhook 8. Click the **Create Webhook** button to finalize your webhook setup. **That's it!** Your webhook is now configured to send SalesIQ events to Botpress.