Nền tảng
Tính năng
Studio đại lý
Xây dựng và tùy chỉnh đại lý của bạn một cách nhanh chóng
Động cơ tự động
Sử dụng LLMs để hướng dẫn các cuộc trò chuyện và nhiệm vụ
Cơ sở tri thức
Đào tạo bot của bạn với các nguồn kiến thức tùy chỉnh
Bàn giao con người
Quản lý các cuộc trò chuyện có sự tham gia của con người
Bảng
Lưu trữ và quản lý dữ liệu cuộc hội thoại
Kênh
Whatsapp Biểu tượng
WhatsApp
Instagram Biểu tượng
Instagram
Facebook Messenger biểu tượng
Messenger
Slack biểu tượng
Slack
Tất cả các kênh
Tích hợp
Biểu trưng Hubspot
HubSpot
Notion biểu tượng
Notion
Biểu tượng Jira
Jira
Calendly biểu trưng
Calendly
Tất cả các tích hợp
LLM Nhà cung cấp
OpenAI biểu trưng
OpenAI
Anthropic biểu trưng
Anthropic
Groq biểu trưng
Groq
Biểu tượng HuggingFace
Hugging Face
Tất cả LLMs
Giải pháp
Cho
Doanh nghiệp
Tự động hóa quy trình sản xuất quan trọng
Cơ quan
Cung cấp dịch vụ đại lý tinh vi
Nhà phát triển
Khám phá API mạnh mẽ để phát triển tác nhân
Câu chuyện của khách hàng
Khám phá từ những khách hàng thành công cách thức Botpress đang chuyển đổi hoạt động kinh doanh trên toàn thế giới.
Theo Ngành
Thương mại điện tử
Giáo dục
Tài chính
Hospitality
Tất cả các ngành công nghiệp
Theo Bộ phận
Bán hàng
Kỹ thuật
Sản phẩm
ITSM
Tất cả các phòng ban
Theo trường hợp sử dụng
Tự động hóa quy trình làm việc
Quản lý vé
Trợ lý mua sắm
Sản phẩm Copilot
Tất cả các trường hợp sử dụng
Tài nguyên
Thiết yếu
Academy
Học cách xây dựng thông qua các khóa học được tuyển chọn
Thư viện
Tài nguyên để nâng cao quy trình làm việc AI của bạn
Tin tức
Thông tin chi tiết và cập nhật về Botpress và các tác nhân AI
xây dựng
Discord
Tham gia cùng hàng ngàn người bạn và chia sẻ ý tưởng
Documents
Hướng dẫn và tài liệu tham khảo toàn diện
API
Tài liệu tham khảo để sử dụng với các hệ thống bên ngoài
Sự kiện
Các buổi gặp mặt hàng tháng dành cho các nhà phát triển và những người tò mò về công nghệ
Video
Hướng dẫn, bản demo và hướng dẫn sử dụng sản phẩm
Nhật ký thay đổi
Cập nhật thông tin mới nhất Botpress cập nhật
Đối tác
Trở thành đối tác
Tham gia mạng lưới các chuyên gia được chứng nhận của chúng tôi
Thuê một chuyên gia
Kết nối với đối tác và chuyên gia tư vấn
Documents
Doanh nghiệp
Giá
Đăng nhập
Liên hệĐăng ký
quay lại Hub

Zoho

v3.1.1
Cài đặt trên Không gian làm việc của bạn
Được duy trì bởi Botpress Đội
  # Botpress Integration: Zoho CRM

## **Zoho CRM Integration Guide**

For further details, refer to the [**Zoho CRM API documentation**](https://www.zoho.com/crm/developer/docs/api/v7/).

## **Overview**

This Botpress integration allows seamless interaction with **Zoho CRM**. It enables users to manage contacts, deals, appointments, and files directly through their chatbot.

## **Features**

- **Record Management:** Create, retrieve, update, delete, and search records.
- **Appointments Management:** Create, update, retrieve, and delete appointments.
- **File Management:** Upload and retrieve files.
- **Emails:** Send emails and associate them with records.
- **Organization & User Management:** Retrieve organization details and user information.

## Register Your Application

Before making any API calls using the Zoho Botpress Integration, you must register your application with **Zoho CRM**.

### **[Loom video walk through setting up the OAuth configuration.](https://www.loom.com/share/41c2811c047a48cbb08a2d1b0dc98f69?sid=8cb4d496-2cca-415d-be1d-536a87c73a3a)**

### Steps to Register

1. **Go to the [Zoho Developer Console](https://accounts.zoho.com/developerconsole).**
2. Click **Add Client**.
3. Choose the client type: **Self Client**.
4. Click the **Generate Code** tab and enter the following scopes:

   ```
   ZohoCRM.modules.ALL,ZohoCRM.org.ALL,ZohoCRM.users.ALL,ZohoCRM.settings.ALL,ZohoCRM.send_mail.all.CREATE,ZohoCRM.files.CREATE,ZohoCRM.files.READ
   ```

5. Set the **time duration** to **10 minutes**.
6. Provide a scope description (This is not vital to the registration).
7. Click **Create**, select your CRM, and click **Create** again.
8. Download your **credentials file**.

### Generate Refresh Token

Now, execute the following **cURL** command to obtain a refresh token. 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` |

### Execute cURL Request

Replace the placeholders (`CLIENT_ID`, `CLIENT_SECRET`, and `AUTHORIZATION_CODE`) with your actual values before executing the request.

```sh
curl --request POST \
  --url 'https://YOUR_REGION_ACCOUNT_URL/oauth/v2/token' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data 'grant_type=authorization_code' \
  --data 'client_id=YOUR_CLIENT_ID' \
  --data 'client_secret=YOUR_CLIENT_SECRET' \
  --data 'redirect_uri=YOUR_REDIRECT_URI' \
  --data 'code=AUTHORIZATION_CODE'
```

### Expected Response

If the request is successful, you should receive a response similar to the following:

```json
{
  "access_token": "{access_token}",
  "refresh_token": "{refresh_token}",
  "api_domain": "https://www.zohoapis.com",
  "token_type": "Bearer",
  "expires_in": 3600
}
```

# Define the Zoho OAuth token endpoint based on your region

$uri = "https://YOUR_REGION_ACCOUNT_URL/oauth/v2/token"

# Define the request body with required parameters

$body = @{
grant_type = "authorization_code"
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
redirect_uri = "YOUR_REDIRECT_URI"
code = "AUTHORIZATION_CODE"
}

### Generate Refresh Token using PowerShell (Windows Users)

⚠️ Use this PowerShell command if you're on Windows. Do NOT use cURL—this is for PowerShell only! ⚠️

#### Define the Zoho OAuth token endpoint based on your region

$uri = "https://YOUR_REGION_ACCOUNT_URL/oauth/v2/token"

# Define the request body with required parameters

$body = @{
grant_type = "authorization_code"
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
redirect_uri = "YOUR_REDIRECT_URI"
code = "AUTHORIZATION_CODE"
}

##### Convert body to URL-encoded form data

```
$body = $body | ForEach-Object { "$( $_.Key )=$( $_.Value )" } -join "&"
```

#### Send the POST request using Invoke-RestMethod

```
$response = Invoke-RestMethod -Uri $uri -Method Post -ContentType "application/x-www-form-urlencoded" -Body $body
```

#### Output the response

```
$response
```

## Configure Zoho Botpress Integration

Once you have the necessary credentials, navigate to the **Zoho Botpress Integration** configuration page and enter the following details:

- **Client ID**
- **Client Secret**
- **Refresh Token**
- **Region**

This completes the registration and integration process for **Zoho Botpress**. You are now ready to start making authorized API calls.

---

For more details, refer to the [Zoho API Documentation](https://www.zoho.com/crm/developer/docs/).

---

## API Functions & Usage

Below are the available actions in this integration:

### 1️⃣ **Record Management**

#### **Insert Record**

- **Method:** `POST /crm/v7/{module}`
- **Input:**
  ```json
  {
    "module": "Leads",
    "data": [{ "Last_Name": "Daly", "First_name": "Paul", "Email": "[email protected]" }]
  }
  ```
- **Output:**
  ```json
  {
    "success": true,
    "message": "Request successful",
    "data": {
      "code": "SUCCESS",
      "message": "Record added",
      "status": "success",
      "details": {
        "id": "27234000000176001",
        "Created_By": "Matea Vasileski",
        "Modified_By": "Matea Vasileski",
        "Created_Time": "2025-02-26T18:39:39-05:00",
        "Modified_Time": "2025-02-26T18:39:39-05:00"
      }
    }
  }
  ```

#### **Get Records**

- **Method:** `GET /crm/v7/{module}`
- **Input:**
  ```json
  {
    "module": "Leads",
    "params": { "fields": "Email" }
  }
  ```
- **Output:**
  ```json
  {
    "success": true,
    "message": "Request successful",
    "data": {
      "id": "27234000000157008",
      "Full_Name": "Jim Mulani",
      "First_Name": "Jim",
      "Last_Name": "Mulani",
      "Email": "[email protected]",
      "Company": "envy",
      "Owner": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Created_By": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Modified_By": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Created_Time": "2025-02-23T21:51:21-05:00",
      "Modified_Time": "2025-02-26T18:19:10-05:00",
      "Lead_Status": null,
      "Lead_Source": null,
      "Record_Status": "Available"
    }
  }
  ```

#### **Get Record By ID**

- **Method:** `GET /crm/v7/{module}/{recordId}`
- **Input:**
  ```json
  {
    "module": "Leads",
    "recordId": "27234000000157008"
  }
  ```
- **Output:**
  ```json
  {
    "success": true,
    "message": "Request successful",
    "data": {
      "id": "27234000000157008",
      "Full_Name": "Jim Mulani",
      "First_Name": "Jim",
      "Last_Name": "Mulani",
      "Email": "[email protected]",
      "Company": "envy",
      "Owner": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Created_By": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Modified_By": {
        "name": "Matea Vasileski",
        "id": "27234000000095001",
        "email": "[email protected]"
      },
      "Created_Time": "2025-02-23T21:51:21-05:00",
      "Modified_Time": "2025-02-26T18:19:10-05:00",
      "Lead_Status": null,
      "Lead_Source": null,
      "Record_Status": "Available"
    }
  }
  ```

#### **Update Record**

- **Method:** `PUT /crm/v7/{module}/{recordId}`
- **Input:**
  ```json
  {
    "module": "Leads",
    "recordId": "27234000000162001",
    "data": [{ "Email": "[email protected]" }]
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "code": "SUCCESS",
    "message": "Record updated",
    "status": "success",
    "details": {
      "id": "27234000000157008",
      "Created_By": "Matea Vasileski",
      "Modified_By": "Matea Vasileski",
      "Created_Time": "2025-02-23T21:51:21-05:00",
      "Modified_Time": "2025-02-26T18:55:37-05:00"
    }
  }
}
```

#### **Delete Record**

- **Method:** `DELETE /crm/v7/{module}/{recordId}`
- **Input:**
  ```json
  {
    "module": "Leads",
    "recordId": "27234000000162008"
  }
  ```
- **Output:**
  ```json
  {
    "success": true,
    "message": "Request successful",
    "data": {
      "code": "SUCCESS",
      "message": "Record deleted",
      "status": "success",
      "details": {
        "id": "27234000000157008"
      }
    }
  }
  ```

#### **Search Records**

- **Method:** `GET /crm/v7/{module}/search`
- **Input:**
  ```json
  {
    "module": "Leads",
    "criteria": "(First_Name:equals:John)"
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "records": [
      {
        "id": "27234000000176001",
        "Full_Name": "Daly",
        "Email": "[email protected]",
        "Created_Time": "2025-02-26T18:39:39-05:00",
        "Modified_Time": "2025-02-26T18:39:39-05:00",
        "Owner": {
          "name": "Matea Vasileski",
          "email": "[email protected]"
        },
        "Record_Status": "Available"
      },
      {
        "id": "27234000000174002",
        "Full_Name": "Daly",
        "Email": "[email protected]",
        "Created_Time": "2025-02-26T18:17:10-05:00",
        "Modified_Time": "2025-02-26T18:17:10-05:00",
        "Owner": {
          "name": "Matea Vasileski",
          "email": "[email protected]"
        },
        "Record_Status": "Available"
      }
    ],
    "pagination": {
      "per_page": 200,
      "count": 2,
      "page": 1,
      "sort_by": "id",
      "sort_order": "desc",
      "more_records": false
    }
  }
}
```

---

### 2️⃣ **Appointments Management**

#### **Create Appointment**

- **Method:** `POST /crm/v7/Appointments__s`
- **Input:**
  ```json
  [
    {
      "Appointment_Name": "Matea - Mowing Service",
      "Appointment_For": {
        "module": {
          "api_name": "Contacts"
        },
        "name": "k m",
        "id": "27234000000163029"
      },
      "Service_Name": {
        "name": "mow",
        "id": "27234000000168178"
      },
      "Appointment_Start_Time": "2025-02-24T19:33:00Z",
      "Owner": "27234000000095001",
      "Location": "Business Address",
      "Address": "Business Address",
      "Additional_Information": "",
      "Remind_At": [
        {
          "unit": 30,
          "period": "minutes"
        }
      ],
      "Price": "$1.00"
    }
  ]
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "code": "SUCCESS",
    "message": "Record added",
    "status": "success",
    "details": {
      "id": "27234000000175008",
      "Created_By": "Matea Vasileski",
      "Modified_By": "Matea Vasileski",
      "Created_Time": "2025-02-26T19:21:59-05:00",
      "Modified_Time": "2025-02-26T19:21:59-05:00"
    }
  }
}
```

#### **Get Appointments**

- **Method:** `GET /crm/v7/Appointments__s`
- **Input:**
  ```json
  {
    "params": { "fields": "Service_Name" }
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "records": [
      {
        "id": "27234000000159008",
        "Service_Name": {
          "name": "mow",
          "id": "27234000000168178"
        }
      }
    ],
    "pagination": {
      "per_page": 200,
      "count": 1,
      "page": 1,
      "sort_by": "id",
      "sort_order": "desc",
      "more_records": false
    }
  }
}
```

#### **Get Appointment By ID**

- **Method:** `GET /crm/v7/Appointments__s/{appointmentId}`
- **Input:**
  ```json
  {
    "appointmentId": "123456"
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "appointment": {
      "id": "27234000000175008",
      "Appointment_Name": "Matea - Mowing Service",
      "Service_Name": {
        "name": "mow",
        "id": "27234000000168178"
      },
      "Appointment_For": {
        "name": "k m",
        "id": "27234000000163029",
        "module": "Contacts"
      },
      "Owner": {
        "name": "Matea Vasileski",
        "email": "[email protected]"
      },
      "Created_By": {
        "name": "Matea Vasileski",
        "email": "[email protected]"
      },
      "Modified_By": {
        "name": "Matea Vasileski",
        "email": "[email protected]"
      },
      "Appointment_Start_Time": "2025-02-24T14:33:00-05:00",
      "Appointment_End_Time": "2025-02-24T15:03:00-05:00",
      "Duration": 30,
      "Status": "Overdue",
      "Location": "Business Address",
      "Remind_At": [
        {
          "unit": 30,
          "period": "minutes"
        }
      ],
      "Created_Time": "2025-02-26T19:21:59-05:00",
      "Modified_Time": "2025-02-26T19:21:59-05:00",
      "Record_Status": "Available"
    }
  }
}
```

#### **Update Appointment**

- **Method:** `PUT /crm/v7/Appointments__s/{appointmentId}`
- **Input:**
  ```json
  {
    "appointmentId": "27234000000159008",
    "data": {
      "appointments": [
        {
          "Appointment_Name": "Update appt",
          "Appointment_For": {
            "module": "Contacts",
            "name": "k m",
            "id": "27234000000163029"
          },
          "Service_Name": {
            "name": "mow",
            "id": "27234000000168178"
          },
          "Appointment_Start_Time": "2025-02-24T19:33:00Z",
          "Owner": "27234000000095001",
          "Location": "Business Address",
          "Address": "Business Address",
          "Additional_Information": "",
          "Remind_At": [
            {
              "unit": 30,
              "period": "minutes"
            }
          ],
          "Price": "$1.00"
        }
      ]
    }
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "code": "SUCCESS",
    "message": "Record updated",
    "status": "success",
    "details": {
      "id": "27234000000159008",
      "Created_By": "Matea Vasileski",
      "Modified_By": "Matea Vasileski",
      "Created_Time": "2025-02-24T19:44:23-05:00",
      "Modified_Time": "2025-02-26T19:48:20-05:00"
    }
  }
}
```

#### **Delete Appointment**

- **Method:** `DELETE /crm/v7/Appointments__s/{appointmentId}`
- **Input:**
  ```json
  {
    "appointmentId": "123456"
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "code": "SUCCESS",
    "message": "Record deleted",
    "status": "success",
    "details": {
      "id": "27234000000159008"
    }
  }
}
```

---

### 3️⃣ **File Management**

#### **Upload File**

- **Method:** `POST /crm/v7/files`
- **Input:**

```json
{
  "fileUrl": "https://example.com/file.pdf"
}
```

- **Output:**

```json
{
  "success": true,
  "message": "File uploaded successfully",
  "data": {
    "code": "SUCCESS",
    "message": "File uploaded successfully",
    "status": "success",
    "details": {
      "name": "20250226050635-LO9N1PT0.webp",
      "id": "36c38a1979b316686084c58303b1b6cb654eb04f0f1038ed0a8fdf8a6ff28598dceae7f8711509bfd80b56bf8cd4dbba"
    }
  }
}
```

#### **Get File**

- **Method:** `GET /crm/v7/files/{fileId}`
- **Input:**

```json
{
  "fileId": "dcc53e79cfef0810414e8335b0e11d8882a51116f390194f400828673ca4a59492a22be84db32aa8425d0859862491f9"
}
```

- **Output:**

```json
{
    "success":true,
    "message":"Request successful",
    "data": BinaryFileData
}
```

---

### 4️⃣ **Organization & User Management**

#### **Get Organization Details**

- **Method:** `GET /crm/v7/org`
- **Input:**
  No input is required.

- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "organization": {
      "id": "27234000000000684",
      "company_name": "Envyro",
      "domain_name": "org110000680144",
      "primary_email": "[email protected]",
      "currency": "Canadian Dollar - CAD",
      "currency_symbol": "$",
      "time_zone": "America/Toronto",
      "country_code": "US",
      "license_details": {
        "paid": true,
        "paid_type": "professional",
        "paid_expiry": "2025-03-23T20:00:00-04:00",
        "users_license_purchased": 1
      },
      "created_time": "2024-09-11T11:04:19-04:00"
    }
  }
}
```

#### **Get Users**

- **Method:** `GET /crm/v7/users`
- **Input:**
  ```json
  {
    "params": { "status": "active" }
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "users": [
      {
        "id": "27234000000095001",
        "full_name": "Matea Vasileski",
        "email": "[email protected]",
        "role": "CEO",
        "profile": "Administrator",
        "status": "active",
        "country": "Canada",
        "state": "Ontario",
        "time_zone": "America/Toronto",
        "created_time": "2024-09-11T11:04:19-04:00",
        "modified_time": "2024-09-11T11:04:19-04:00"
      },
      {
        "id": "27234000000103062",
        "full_name": "Milos Arsik",
        "email": "[email protected]",
        "role": "CEO",
        "profile": "Administrator",
        "status": "closed",
        "time_zone": "America/Toronto",
        "created_time": "2024-09-16T00:36:14-04:00",
        "modified_time": "2024-11-01T12:18:54-04:00"
      }
    ],
    "pagination": {
      "per_page": 200,
      "count": 2,
      "page": 1,
      "more_records": false
    }
  }
}
```

---

### 5️⃣ **Emails**

#### **Send Email**

- **Method:** `POST /crm/v7/emails`
- **Input:**
  ```json
  {
    "module": "Leads",
    "recordId": "123456",
    "data": [
      {
        "from": {
          "user_name": "Matea Vasileski",
          "email": "[email protected]"
        },
        "to": [
          {
            "user_name": "user1",
            "email": "[email protected]"
          }
        ],
        "cc": [],
        "bcc": [],
        "subject": "Important Update",
        "content": "Here is an important update for you.",
        "mail_format": "html"
      }
    ]
  }
  ```
- **Output:**

```json
{
  "success": true,
  "message": "Request successful",
  "data": {
    "code": "SUCCESS",
    "message": "Your mail has been sent successfully.",
    "status": "success",
    "details": {
      "message_id": "2e660cab6382a85766b68e77778eadf168f923354a69b362ace2e52ce0b934ba"
    }
  }
}
```

---

Xây dựng tốt hơn với Botpress

Tạo ra những trải nghiệm tuyệt vời cho tác nhân AI.

Bắt đầu - hoàn toàn miễn phí
Tìm hiểu thêm tại Botpress Academy

Xây dựng các tác nhân AI tốt hơn và nhanh hơn với bộ sưu tập các khóa học, hướng dẫn và bài hướng dẫn được chúng tôi tuyển chọn kỹ lưỡng.

Thuê một chuyên gia

Kết nối với các nhà phát triển được chứng nhận của chúng tôi để tìm một chuyên gia xây dựng phù hợp với nhu cầu của bạn.

Tất cả các hệ thống hoạt động
SOC 2
Chứng nhận
GDPR
Tuân thủ
© 2025
Nền tảng
Giá
Studio đại lý
Động cơ tự động
Cơ sở tri thức
Bàn giao con người
Bảng
Hub
Tích hợp
Kênh
LLMs
Tài nguyên
Nói chuyện với bộ phận bán hàng
Tư liệu
Thuê một chuyên gia
Video
Câu chuyện của khách hàng
Tài liệu tham khảo API
Tin tức
Tình trạng
v12 Tài nguyên
Cộng đồng
Hỗ trợ cộng đồng
Trở thành đối tác
Trở thành Đại sứ
Trở thành Đối tác liên kết
Công ty
Về
Nghề nghiệp
Tin tức & Báo chí
Hợp pháp
Sự riêng tư