UNPKG

crisp-api

Version:

Crisp API wrapper for Node - official, maintained by Crisp

1,282 lines (999 loc) 138 kB
# Crisp API Wrapper [![Test and Build](https://github.com/crisp-im/node-crisp-api/actions/workflows/test.yml/badge.svg)](https://github.com/crisp-im/node-crisp-api/actions/workflows/test.yml) [![Build and Release](https://github.com/crisp-im/node-crisp-api/actions/workflows/build.yml/badge.svg)](https://github.com/crisp-im/node-crisp-api/actions/workflows/build.yml) [![Version](https://img.shields.io/npm/v/crisp-api.svg)](https://www.npmjs.com/package/crisp-api) [![Downloads](https://img.shields.io/npm/dt/crisp-api.svg)](https://www.npmjs.com/package/crisp-api) The Crisp API Node wrapper. Authenticate, send messages, fetch conversations, access your agent accounts from your JavaScript code. Copyright 2025 Crisp IM SAS. See LICENSE for copying information. * **📝 Implements**: [REST API Reference (V1)](https://docs.crisp.chat/references/rest-api/v1/) at revision: 17/03/2025 * **😘 Maintainers**: [@baptistejamin](https://github.com/baptistejamin), [@eliottvincent](https://github.com/eliottvincent), [@valeriansaliou](https://github.com/valeriansaliou) ## Installation `npm install --save crisp-api` ## Authentication To authenticate against the API, obtain your authentication token keypair by following the [REST API Authentication](https://docs.crisp.chat/guides/rest-api/authentication/) guide. You'll get a token keypair made of 2 values. **Keep your token keypair values private, and store them safely for long-term use.** Then, add authentication parameters to your `client` instance right after you create it: ```javascript var Crisp = require("crisp-api"); var CrispClient = new Crisp(); // Authenticate to API with your plugin token (identifier, key) // eg. CrispClient.authenticate("7c3ef21c-1e04-41ce-8c06-5605c346f73e", "cc29e1a5086e428fcc6a697d5837a66d82808e65c5cce006fbf2191ceea80a0a"); CrispClient.authenticateTier("plugin", identifier, key); // Now, you can use authenticated API sections. ``` ## Overview You may follow the [REST API Quickstart](https://docs.crisp.chat/guides/rest-api/quickstart/) guide, which will get you running with the REST API in minutes. ```javascript var Crisp = require("crisp-api"); var CrispClient = new Crisp(); CrispClient.authenticateTier("plugin", identifier, key); CrispClient.website.listConversations(websiteID, 1) .then(function(conversations) { console.log("Listed conversations:", conversations); }) .catch(function(error) { console.error("Error listing conversations:", error); }); ``` ## Examples ### Create your own bot! ```javascript var Crisp = require("crisp-api"); var CrispClient = new Crisp(); CrispClient.authenticateTier("plugin", identifier, key); // Notice: make sure to authenticate before listening for an event CrispClient.on("message:send", function(message) { CrispClient.website.sendMessageInConversation( message.website_id, message.session_id, { type : "text", content : "I'm a bot", from : "operator", // or user origin : "chat" } ) .then(function(message) { console.log("Message sent:", message); }) .catch(function(error) { console.error("Error sending message:", error); }); }) .then(function() { console.error("Requested to listen to sent messages"); }) .catch(function(error) { console.error("Failed listening to sent messages:", error); }); ``` ## Resource Methods All the available Crisp API resources are fully implemented. **Programmatic methods names are named after their label name in the [REST API Reference](https://docs.crisp.chat/references/rest-api/v1/)**. All methods that you will most likely need when building a Crisp integration are prefixed with a star symbol (⭐). **⚠️ Note that, depending on your authentication token tier, which is either `user` or `plugin`, you may not be allowed to use all methods from the library. When in doubt, refer to the library method descriptions below. Most likely, you are using a `plugin` token.** --- <details> <summary> <a href="#website">Website</a> </summary> <ul> <li><a href="#website-conversations">Website Conversations</a></li> <li><a href="#website-conversation">Website Conversation</a></li> <li><a href="#website-people-these-are-your-end-users">Website People</a></li> <li><a href="#website-helpdesk">Website Helpdesk</a></li> <li><a href="#website-operator">Website Operator</a></li> <li><a href="#website-availability">Website Availability</a></li> <li><a href="#website-analytics">Website Analytics</a></li> <li><a href="#website-batch">Website Batch</a></li> <li><a href="#website-verify">Website Verify</a></li> <li><a href="#website-campaigns">Website Campaigns</a></li> <li><a href="#website-campaign">Website Campaign</a></li> </ul> </details> <details> <summary> <a href="#plugin">Plugin</a> </summary> <ul> <li><a href="#plugin-connect">Plugin Connect</a></li> <li><a href="#plugin-subscription">Plugin Subscription</a></li> </ul> </details> <details> <summary> <a href="#media">Media</a> </summary> <ul> <li><a href="#media-animation">Media Animation</a></li> </ul> </details> <details> <summary> <a href="#bucket">Bucket</a> </summary> <ul> <li><a href="#bucket-url">Bucket URL</a></li> </ul> </details> <details> <summary> <a href="#realtime-events">RTM Events</a> </summary> <ul> <li><a href="#session--reference">Session Events</a></li> <li><a href="#message-events-reference">Message Events</a></li> <li><a href="#people-events-reference">People Events</a></li> <li><a href="#campaign-events-reference">Campaign Events</a></li> <li><a href="#browsing-events-reference">Browsing Events</a></li> <li><a href="#call-events-reference">Call Events</a></li> <li><a href="#widget-events-reference">Widget Events</a></li> <li><a href="#status-events-reference">Status Events</a></li> <li><a href="#website-events-reference">Website Events</a></li> <li><a href="#bucket-events-reference">Bucket Events</a></li> <li><a href="#media-events-reference">Media Events</a></li> <li><a href="#email-events-reference">Email Events</a></li> <li><a href="#plugin-events-reference">Plugin Events</a></li> </ul> </details> --- ### Website * #### **Website Conversations** * **⭐ List Conversations** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-conversations) * `CrispClient.website.listConversations(websiteID, pageNumber)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var pageNumber = 1; CrispClient.website.listConversations(websiteID, pageNumber); ``` </details> * **List Suggested Conversation Segments** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-suggested-conversation-segments) * `CrispClient.website.listSuggestedConversationSegments(websiteID, pageNumber)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var pageNumber = 1; CrispClient.website.listSuggestedConversationSegments(websiteID, pageNumber); ``` </details> * **Delete Suggested Conversation Segment** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#delete-suggested-conversation-segment) * `CrispClient.website.deleteSuggestedConversationSegment(websiteID, segment)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var segment = "bug"; CrispClient.website.deleteSuggestedConversationSegment(websiteID, segment); ``` </details> * **List Suggested Conversation Data Keys** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-suggested-conversation-data-keys) * `CrispClient.website.listSuggestedConversationDataKeys(websiteID, pageNumber)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var pageNumber = 1; CrispClient.website.listSuggestedConversationDataKeys(websiteID, pageNumber); ``` </details> * **Delete Suggested Conversation Data Key** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#delete-suggested-conversation-data-key) * `CrispClient.website.deleteSuggestedConversationDataKey(websiteID, key)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var key = "price"; CrispClient.website.deleteSuggestedConversationDataKey(websiteID, key); ``` </details> * **List Spam Conversations** [`user`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-spam-conversations) * `CrispClient.website.listSpamConversations(websiteID, pageNumber)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var pageNumber = 1; CrispClient.website.listSpamConversations(websiteID, pageNumber); ``` </details> * **Resolve Spam Conversation Content** [`user`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#resolve-spam-conversation-content) * `CrispClient.website.resolveSpamConversationContent(websiteID, spamID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var spamID = "b45e7d75-61ab-416c-858b-1919b5fcfd10"; CrispClient.website.resolveSpamConversationContent(websiteID, spamID); ``` </details> * **Submit Spam Conversation Decision** [`user`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#submit-spam-conversation-decision) * `CrispClient.website.submitSpamConversationDecision(websiteID, spamID, action)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var spamID = "b45e7d75-61ab-416c-858b-1919b5fcfd10"; var action = "reject"; CrispClient.website.submitSpamConversationDecision(websiteID, spamID, action); ``` </details> * #### **Website Conversation** * **⭐ Create A New Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#create-a-new-conversation) * `CrispClient.website.createNewConversation(websiteID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; CrispClient.website.createNewConversation(websiteID); ``` </details> * **Check If Conversation Exists** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#check-if-conversation-exists) * `CrispClient.website.checkConversationExists(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.checkConversationExists(websiteID, sessionID); ``` </details> * **⭐ Get A Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-a-conversation) * `CrispClient.website.getConversation(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.getConversation(websiteID, sessionID); ``` </details> * **Remove A Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#remove-a-conversation) * `CrispClient.website.removeConversation(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.removeConversation(websiteID, sessionID); ``` </details> * **Initiate A Conversation With Existing Session** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#initiate-a-conversation-with-existing-session) * `CrispClient.website.initiateConversationWithExistingSession(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.initiateConversationWithExistingSession(websiteID, sessionID); ``` </details> * **⭐ Get Messages In Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-messages-in-conversation) * `CrispClient.website.getMessagesInConversation(websiteID, sessionID, timestampBefore)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var timestampBefore = 1641206011000; CrispClient.website.getMessagesInConversation(websiteID, sessionID, timestampBefore); ``` </details> * **⭐ Send A Message In Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#send-a-message-in-conversation) * `CrispClient.website.sendMessageInConversation(websiteID, sessionID, message)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var message = { "type": "text", "from": "operator", "origin": "chat", "content": "Hey there! Need help?" }; CrispClient.website.sendMessageInConversation(websiteID, sessionID, message); ``` </details> * **Get A Message In Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-a-message-in-conversation) * `CrispClient.website.getMessageInConversation(websiteID, sessionID, fingerprint)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var fingerprint = 524653764345; CrispClient.website.getMessageInConversation(websiteID, sessionID, fingerprint); ``` </details> * **Update A Message In Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#update-a-message-in-conversation) * `CrispClient.website.updateMessageInConversation(websiteID, sessionID, fingerprint, content)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var fingerprint = 524653764345; var content = "Hey there! Need help?"; CrispClient.website.updateMessageInConversation(websiteID, sessionID, fingerprint, content); ``` </details> * **Remove A Message In Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#remove-a-message-in-conversation) * `CrispClient.website.removeMessageInConversation(websiteID, sessionID, fingerprint)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var fingerprint = 524653764345; CrispClient.website.removeMessageInConversation(websiteID, sessionID, fingerprint); ``` </details> * **Compose A Message In Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#compose-a-message-in-conversation) * `CrispClient.website.composeMessageInConversation(websiteID, sessionID, compose)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var compose = { "type": "start", "from": "operator" }; CrispClient.website.composeMessageInConversation(websiteID, sessionID, compose); ``` </details> * **⭐ Mark Messages As Read In Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#mark-messages-as-read-in-conversation) * `CrispClient.website.markMessagesReadInConversation(websiteID, sessionID, read)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var read = { "from": "operator", "origin": "urn:crisp.im:slack:0", "fingerprints": [ "5719231201" ] }; CrispClient.website.markMessagesReadInConversation(websiteID, sessionID, read); ``` </details> * **Mark Conversation As Unread** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#mark-conversation-as-unread) * `CrispClient.website.markConversationAsUnread(websiteID, sessionID, unread)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var unread = { "from": "operator" }; CrispClient.website.markConversationAsUnread(websiteID, sessionID, unread); ``` </details> * **⭐ Mark Messages As Delivered In Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#mark-messages-as-delivered-in-conversation) * `CrispClient.website.markMessagesDeliveredInConversation(websiteID, sessionID, delivered)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var delivered = { "from": "operator", "origin": "urn:crisp.im:slack:0", "fingerprints": [ "5719231201" ] }; CrispClient.website.markMessagesDeliveredInConversation(websiteID, sessionID, delivered); ``` </details> * **Update Conversation Open State** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#update-conversation-open-state) * `CrispClient.website.updateConversationOpenState(websiteID, sessionID, opened)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var opened = true; CrispClient.website.updateConversationOpenState(websiteID, sessionID, opened); ``` </details> * **⭐ Get Conversation Routing Assign** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-conversation-routing-assign) * `CrispClient.website.getConversationRoutingAssign(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.getConversationRoutingAssign(websiteID, sessionID); ``` </details> * **⭐ Assign Conversation Routing** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#assign-conversation-routing) * `CrispClient.website.assignConversationRouting(websiteID, sessionID, assign)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var assign = { "assigned": { "user_id": "a4c32c68-be91-4e29-8a05-976e93abbe3f" } }; CrispClient.website.assignConversationRouting(websiteID, sessionID, assign); ``` </details> * **Update Conversation Inbox** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#update-conversation-inbox) * `CrispClient.website.updateConversationInbox(websiteID, sessionID, inboxID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var inboxID = "bf6935c9-43b3-4f8e-87ea-175c1e1ed1a9"; CrispClient.website.updateConversationInbox(websiteID, sessionID, inboxID); ``` </details> * **⭐ Get Conversation Metas** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-conversation-metas) * `CrispClient.website.getConversationMetas(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.getConversationMetas(websiteID, sessionID); ``` </details> * **⭐ Update Conversation Metas** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#update-conversation-metas) * `CrispClient.website.updateConversationMetas(websiteID, sessionID, metas)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var metas = { "nickname": "John Doe", "email": "john.doe@acme-inc.com", "segments": [ "happy", "customer", "love" ], "data": { "type": "customer", "signup": "finished" } }; CrispClient.website.updateConversationMetas(websiteID, sessionID, metas); ``` </details> * **Get An Original Message In Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-an-original-message-in-conversation) * `CrispClient.website.getOriginalMessageInConversation(websiteID, sessionID, originalID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var originalID = "2325a3c0-9b47-4fc6-b00e-111b752e44cd"; CrispClient.website.getOriginalMessageInConversation(websiteID, sessionID, originalID); ``` </details> * **List Conversation Pages** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-conversation-pages) * `CrispClient.website.listConversationPages(websiteID, sessionID, pageNumber)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var pageNumber = 1; CrispClient.website.listConversationPages(websiteID, sessionID, pageNumber); ``` </details> * **List Conversation Events** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-conversation-events) * `CrispClient.website.listConversationEvents(websiteID, sessionID, pageNumber)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var pageNumber = 1; CrispClient.website.listConversationEvents(websiteID, sessionID, pageNumber); ``` </details> * **List Conversation Files** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-conversation-files) * `CrispClient.website.listConversationFiles(websiteID, sessionID, pageNumber)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var pageNumber = 1; CrispClient.website.listConversationFiles(websiteID, sessionID, pageNumber); ``` </details> * **Get Conversation State** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-conversation-state) * `CrispClient.website.getConversationState(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.getConversationState(websiteID, sessionID); ``` </details> * **⭐ Change Conversation State** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#change-conversation-state) * `CrispClient.website.changeConversationState(websiteID, sessionID, state)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var state = "unresolved"; CrispClient.website.changeConversationState(websiteID, sessionID, state); ``` </details> * **Get Conversation Participants** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-conversation-participants) * `CrispClient.website.getConversationParticipants(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.getConversationParticipants(websiteID, sessionID); ``` </details> * **Save Conversation Participants** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#save-conversation-participants) * `CrispClient.website.saveConversationParticipants(websiteID, sessionID, participants)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var participants = { "participants": [ { "type": "email", "target": "jane.doe@acme-inc.com" } ] }; CrispClient.website.saveConversationParticipants(websiteID, sessionID, participants); ``` </details> * **Get Block Status For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-block-status-for-conversation) * `CrispClient.website.getBlockStatusForConversation(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.getBlockStatusForConversation(websiteID, sessionID); ``` </details> * **Block Incoming Messages For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#block-incoming-messages-for-conversation) * `CrispClient.website.blockIncomingMessagesForConversation(websiteID, sessionID, blocked)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var blocked = true; CrispClient.website.blockIncomingMessagesForConversation(websiteID, sessionID, blocked); ``` </details> * **Get Verify Status For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-verify-status-for-conversation) * `CrispClient.website.getVerifyStatusForConversation(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.getVerifyStatusForConversation(websiteID, sessionID); ``` </details> * **Update Verify Status For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#update-verify-status-for-conversation) * `CrispClient.website.updateVerifyStatusForConversation(websiteID, sessionID, verified)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var verified = true; CrispClient.website.updateVerifyStatusForConversation(websiteID, sessionID, verified); ``` </details> * **Request Identity Verification For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#request-identity-verification-for-conversation) * `CrispClient.website.requestIdentityVerificationForConversation(websiteID, sessionID, verification)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var verification = { "identity": "email" }; CrispClient.website.requestIdentityVerificationForConversation(websiteID, sessionID, verification); ``` </details> * **Redeem Identity Verification Link For Conversation**: [Reference](https://docs.crisp.chat/references/rest-api/v1/#redeem-identity-verification-link-for-conversation) * `CrispClient.website.redeemIdentityVerificationLinkForConversation(websiteID, sessionID, identity, token)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var verification = { "identity": "email", "token": "709691" }; CrispClient.website.redeemIdentityVerificationLinkForConversation(websiteID, sessionID, verification); ``` </details> * **Request Email Transcript For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#request-email-transcript-for-conversation) * `CrispClient.website.requestEmailTranscriptForConversation(websiteID, sessionID, to, email)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var email = { "to": "operator", "email": "valerian@crisp.chat" }; CrispClient.website.requestEmailTranscriptForConversation(websiteID, sessionID, to, email); ``` </details> * **Request Chatbox Binding Purge For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#request-chatbox-binding-purge-for-conversation) * `CrispClient.website.requestChatboxBindingPurgeForConversation(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.requestChatboxBindingPurgeForConversation(websiteID, sessionID); ``` </details> * **Request User Feedback For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#request-user-feedback-for-conversation) * `CrispClient.website.requestUserFeedbackForConversation(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.requestUserFeedbackForConversation(websiteID, sessionID); ``` </details> * **List Browsing Sessions For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-browsing-sessions-for-conversation) * `CrispClient.website.listBrowsingSessionsForConversation(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.listBrowsingSessionsForConversation(websiteID, sessionID); ``` </details> * **Initiate Browsing Session For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#initiate-browsing-session-for-conversation) * `CrispClient.website.initiateBrowsingSessionForConversation(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.initiateBrowsingSessionForConversation(websiteID, sessionID); ``` </details> * **Send Action To An Existing Browsing Session** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#send-action-to-an-existing-browsing-session) * `CrispClient.website.sendActionToExistingBrowsingSession(websiteID, sessionID, browsingID, action)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var browsingID = "browsing_05a9392d-ff3f-45e7-b021-1179c45668fa"; var action = "start"; CrispClient.website.sendActionToExistingBrowsingSession(websiteID, sessionID, browsingID, action); ``` </details> * **Assist Existing Browsing Session** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#assist-an-existing-browsing-session) * `CrispClient.website.assistExistingBrowsingSession(websiteID, sessionID, browsingID, assist)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var browsingID = "browsing_05a9392d-ff3f-45e7-b021-1179c45668fa"; var assist = { "action": "mouse", "mouse": { "x": 0, "y": 784 } }; CrispClient.website.assistExistingBrowsingSession(websiteID, sessionID, browsingID, assist); ``` </details> * **Initiate New Call Session For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#initiate-new-call-session-for-conversation) * `CrispClient.website.initiateNewCallSessionForConversation(websiteID, sessionID, mode)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var mode = "audio"; CrispClient.website.initiateNewCallSessionForConversation(websiteID, sessionID, mode); ``` </details> * **Get Ongoing Call Session For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-ongoing-call-session-for-conversation) * `CrispClient.website.getOngoingCallSessionForConversation(websiteID, sessionID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; CrispClient.website.getOngoingCallSessionForConversation(websiteID, sessionID); ``` </details> * **Abort Ongoing Call Session For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#abort-ongoing-call-session-for-conversation) * `CrispClient.website.abortOngoingCallSessionForConversation(websiteID, sessionID, callID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var callID = "call_35a0c062-72fa-4095-a2a0-f9911d47ee56"; CrispClient.website.abortOngoingCallSessionForConversation(websiteID, sessionID, callID); ``` </details> * **Transmit Signaling On Ongoing Call Session** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#transmit-signaling-on-ongoing-call-session) * `CrispClient.website.transmitSignalingOnOngoingCallSession(websiteID, sessionID, callID, payload)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var callID = "call_35a0c062-72fa-4095-a2a0-f9911d47ee56"; var payload = { "type": "sdp", "payload": {} }; CrispClient.website.transmitSignalingOnOngoingCallSession(websiteID, sessionID, callID, payload); ``` </details> * **Deliver Widget Button Action For Conversation** [`user`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#deliver-widget-button-action-for-conversation) * `CrispClient.website.deliverWidgetButtonActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, data, value)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var pluginID = "c64f3595-adee-425a-8d3a-89d47f7ed6bb"; var sectionID = "8f8d3041-6698-43b8-a559-ae93211e6292"; var itemID = "7631d7d8-4fe7-4ef8-9a36-31183dcd4785"; var value = { "section_id": "payments", "item_id": "refund_on_stripe", "data": { "invoice": "D-1929-X" } }; CrispClient.website.deliverWidgetButtonActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, data, value); ``` </details> * **Deliver Widget Data Fetch Action For Conversation** [`user`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#deliver-widget-data-action-for-conversation) * `CrispClient.website.deliverWidgetDataFetchActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, data)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var pluginID = "c64f3595-adee-425a-8d3a-89d47f7ed6bb"; var sectionID = "8f8d3041-6698-43b8-a559-ae93211e6292"; var itemID = "7631d7d8-4fe7-4ef8-9a36-31183dcd4785"; var data = { "section_id": "payments", "item_id": "unpaid_balance", "action": "fetch", "data": {} }; CrispClient.website.deliverWidgetDataFetchActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, data); ``` </details> * **Deliver Widget Data Edit Action For Conversation** [`user`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#deliver-widget-data-action-for-conversation) * `CrispClient.website.deliverWidgetDataEditActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, value)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var pluginID = "c64f3595-adee-425a-8d3a-89d47f7ed6bb"; var sectionID = "8f8d3041-6698-43b8-a559-ae93211e6292"; var itemID = "7631d7d8-4fe7-4ef8-9a36-31183dcd4785"; var data = { "section_id": "payments", "item_id": "unpaid_balance", "action": "fetch", "data": {} }; CrispClient.website.deliverWidgetDataFetchActionForConversation(websiteID, sessionID, pluginID, sectionID, itemID, data); ``` </details> * **Schedule A Reminder For Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#schedule-a-reminder-for-conversation) * `CrispClient.website.scheduleReminderForConversation(websiteID, sessionID, date, note)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var note = { "date": "2018-05-29T09:00:00Z", "note": "Call this customer." }; CrispClient.website.scheduleReminderForConversation(websiteID, sessionID, date, note); ``` </details> * **Report Conversation** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#report-conversation) * `CrispClient.website.reportConversation(websiteID, sessionID, flag)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var sessionID = "session_700c65e1-85e2-465a-b9ac-ecb5ec2c9881"; var flag = "spam"; CrispClient.website.reportConversation(websiteID, sessionID, flag); ``` </details> * ### **Website People** _(these are your end-users)_ * **Get People Statistics** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-people-statistics) * `CrispClient.website.getPeopleStatistics(websiteID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; CrispClient.website.getPeopleStatistics(websiteID); ``` </details> * **List Suggested People Segments** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-suggested-people-segments) * `CrispClient.website.listSuggestedPeopleSegments(websiteID, pageNumber)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var pageNumber = 1; CrispClient.website.listSuggestedPeopleSegments(websiteID, pageNumber); ``` </details> * **Delete Suggested People Segment** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#delete-suggested-people-segment) * `CrispClient.website.deleteSuggestedPeopleSegment(websiteID, segment)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var segment = "poweruser"; CrispClient.website.deleteSuggestedPeopleSegment(websiteID, segment); ``` </details> * **List Suggested People Data Keys** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-suggested-people-data-keys) * `CrispClient.website.listSuggestedPeopleDataKeys(websiteID, pageNumber)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var pageNumber = 1; CrispClient.website.listSuggestedPeopleDataKeys(websiteID, pageNumber); ``` </details> * **Delete Suggested People Data Key** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#delete-suggested-people-data-key) * `CrispClient.website.deleteSuggestedPeopleDataKey(websiteID, key)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var key = "price"; CrispClient.website.deleteSuggestedPeopleDataKey(websiteID, key); ``` </details> * **List Suggested People Events** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-suggested-people-events) * `CrispClient.website.listSuggestedPeopleEvents(websiteID, pageNumber)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var pageNumber = 1; CrispClient.website.listSuggestedPeopleEvents(websiteID, pageNumber); ``` </details> * **Delete Suggested People Event** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#delete-suggested-people-event) * `CrispClient.website.deleteSuggestedPeopleEvent(websiteID, text)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var text = "Removed item from basket"; CrispClient.website.deleteSuggestedPeopleEvent(websiteID, text); ``` </details> * **⭐ List People Profiles** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#list-people-profiles) * `CrispClient.website.listPeopleProfiles(websiteID, pageNumber, searchField, searchOrder, searchOperator, searchFilter, searchText)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var pageNumber = 1; CrispClient.website.listPeopleProfiles(websiteID, pageNumber, searchField, searchOrder, searchOperator, searchFilter, searchText); ``` </details> * **⭐ Add New People Profile** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#add-new-people-profile) * `CrispClient.website.addNewPeopleProfile(websiteID, peopleProfile)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var peopleProfile = { "email": "valerian@crisp.chat", "person": { "nickname": "Valerian Saliou" } }; CrispClient.website.addNewPeopleProfile(websiteID, peopleProfile); ``` </details> * **⭐ Check If People Profile Exists** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#check-if-people-profile-exists) * `CrispClient.website.checkPeopleProfileExists(websiteID, peopleID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50"; CrispClient.website.checkPeopleProfileExists(websiteID, peopleID); ``` </details> * **⭐ Get People Profile** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#get-people-profile) * `CrispClient.website.getPeopleProfile(websiteID, peopleID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50"; CrispClient.website.getPeopleProfile(websiteID, peopleID); ``` </details> * **⭐ Save People Profile** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#save-people-profile) * `CrispClient.website.savePeopleProfile(websiteID, peopleID, peopleProfile)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50"; var peopleProfile = { "email": "valerian@crisp.chat", "person": { "nickname": "Valerian Saliou" } }; CrispClient.website.savePeopleProfile(websiteID, peopleID, peopleProfile); ``` </details> * **⭐ Update People Profile** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#update-people-profile) * `CrispClient.website.updatePeopleProfile(websiteID, peopleID, peopleProfile)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var peopleID = "c5a2f70c-f605-4648-b47f-8c39d4b03a50"; var peopleProfile = { "email": "valerian@crisp.chat", "person": { "nickname": "Valerian Saliou" } }; CrispClient.website.updatePeopleProfile(websiteID, peopleID, peopleProfile); ``` </details> * **⭐ Remove People Profile** [`user`, `plugin`]: [Reference](https://docs.crisp.chat/references/rest-api/v1/#remove-people-profile) * `CrispClient.website.removePeopleProfile(websiteID, peopleID)` * <details> <summary>See Example</summary> ```javascript var websiteID = "8c842203-7ed8-4e29-a608-7cf78a7d2fcc"; var peopleID = "c5a2f70c-f605-4648