Getting started
Setup and usage

Setup and usage

The Web API supplies a collection of HTTP methods that underpin the majority of HaveFunnels functionalities. To start using the Web API follow the tutorial below.

Usage

Make a POST call to the file include/api.php of your HaveFunnels installation. You can use the following code to make the calls:


                                        function havefunnels_api_function_name($query) {
                                            $ch = curl_init('havefunnels.com/script/include/api.php');
                                            $parameters = [
                                                    CURLOPT_RETURNTRANSFER => true,
                                                    CURLOPT_SSL_VERIFYPEER => false,
                                                    CURLOPT_USERAGENT => 'HaveFunnels',
                                                    CURLOPT_POST => true,
                                                    CURLOPT_CONNECTTIMEOUT => 5,
                                                    CURLOPT_POSTFIELDS => http_build_query(array_merge(['token' => 'YOUR-TOKEN'], $query))
                                            ];
                                            curl_setopt_array($ch, $parameters); 
                                            $response = curl_exec($ch);
                                            curl_close($ch);
                                            return json_decode($response, true);
                                        }
                                    

Usage example: havefunnels_api_function_name(['function' => 'get-user', 'user_id' => 123]).


Warning! This function is not secure because .js files are accessible by anyone. Make sure this code is only available to the correct user.
                                        $.post('havefunnels.com/script/include/api.php', {
                                            function: 'METHOD-NAME',
                                            token: 'YOUR-TOKEN'
                                        }, function (response) {
                                            response = JSON.parse(response);
                                            if (response.success) {
                                                 
                                            }
                                        });
                                    

The variable $response will contains the JSON response. You can add new arguments in the query array: ['token' => '', 'function' => '', 'argument-name' => 'value', ...].


Replace the following strings with the correct values:

  • Replace YOUR-TOKEN with the token of an admin user. You can get the token from the Users area by opening the profile box of an admin user. Only admin tokens are supported and only the admins can view the tokens. Use the token from Account > Installation > API token. Warning! This token must be kept always secret.
  • Replace METHOD-NAME with the name of the API function you want to use. Get them from the methods list below.

Information

  • Some functions are protected for security reasons, enter the code $GLOBALS['SB_FORCE_ADMIN'] = true before calling the function to execute it correctly. Enter the code $GLOBALS['SB_FORCE_ADMIN'] = false immedidately after the function call for security reasons.
  • Some functions require the user details of the active user, use the code $GLOBALS['SB_LOGIN'] = ['id' => '', 'first_name' => '', 'last_name' => '', 'email' => '', 'user_type' => '', 'department' => '']; to set the active user.

WEB API
Users

Users

Methods to manage users, agents, and admins.


get-user

Returns the user details of a user.


Arguments

token
Your admin secret token.
function
Insert get-user.
user_id
The ID of the user.
extra
Set it to true to get the additional user details. Default: false.

Response

                                {
                                    "success": true,
                                    "response": {
                                        "id": "123456",
                                        "first_name": "John",
                                        "last_name": "Doe",
                                        "email": "john@example.com",
                                        "profile_image": "https://havefunnels.com/user.svg",
                                        "user_type": "visitor",
                                        "creation_time": "2020-05-12 14:28:57",
                                        "last_activity": "2020-05-12 14:28:57",
                                        "department": null,
                                        "token": "a521773c5a566a251c3fb00e93162b20ff955b12",
                                        "password": "",
                                        "details": [
                                            {
                                                "slug": "location",
                                                "name": "Location",
                                                "value": "New York, United States"
                                            },
                                            {
                                                "slug": "country_code",
                                                "name": "Country code",
                                                "value": "America/New_York"
                                            }
                                            ...
                                        ]
                                    }
                                }
                            

Return {"success":true, "response":false} if the user is not found.


get-user-extra

Returns the additional details of a user.


Arguments

token
Your admin secret token.
function
Insert get-user-extra.
user_id
The ID of the user.
slug
The slug of the setting to retrieve. If this argument is not set, all user details are returned. Default: false.
default
The default value to return if the user details are not found. Default: false.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "slug": "browser",
                                            "name": "Browser",
                                            "value": "Chrome"
                                        },
                                        {
                                            "slug": "current_url",
                                            "name": "Current URL",
                                            "value": "https://havefunnels.com/"
                                        },
                                        {
                                            "slug": "os",
                                            "name": "OS",
                                            "value": "Windows 10"
                                        },
                                        {
                                            "slug": "phone",
                                            "name": "Phone",
                                            "value": "3203057977"
                                        }
                                        ...
                                    ]
                                }
                            

Return {"success":true, "response":[]} if the user is not found.


get-user-language

Returns the active language code used by the user. By default, it's the user browser language.


Arguments

user_id
The ID of the user from whom you want to get the language.

Response

The language code. Examples: es, it. Returns false if the language code is en or not found.


get-users

Returns the user details of all the users.


Arguments

token
Your admin secret token.
function
Insert get-users.
sorting
Set the order of the returned values. Insert ["column", "order"] and replace column with one of the following values: first_name, last_name, email, profile_image, user_type, creation_time, last_activity, department. Replace order with ASC or DESC.
user_types
Array in JSON format of user types to include in the return value. Array syntax: ["", "", "", ...]. Accepted values: visitor, lead, user, agent, admin. Default: all.
search
The string to search.
pagination
Integer from 1 to N to limit the results number. Insert 1 to get the first 100 results, 2 for the results from 101 to 200, etc.
extra
Set it to true to include all users extra details as well. Set it as an array of user extra detail slugs to include only a subset of extra details. Default: false.
user_ids
Array of IDs. If set, returns only the users with ID included in the given array of IDs. Array syntax: ["", "", "", ...]. Default: false.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "880",
                                            "first_name": "User",
                                            "last_name": "#29938",
                                            "email": null,
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "visitor",
                                            "creation_time": "2020-05-13 08:58:18",
                                            "last_activity": "2020-05-13 09:07:39",
                                            "department": null,
                                            "token": "6d969f64f5ed6263714b9b39f3d3700b66f16820"
                                        },
                                        {
                                            "id": "879",
                                            "first_name": "User",
                                            "last_name": "#86773",
                                            "email": null,
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "visitor",
                                            "creation_time": "2020-05-13 08:38:41",
                                            "last_activity": "2020-05-13 08:58:12",
                                            "department": null,
                                            "token": "2e5064670707d06b661d04353f4a462ec927f19a"
                                        }
                                        ...
                                    ]
                                }
                            

get-new-users

Returns the users created after the given date/ID.


Arguments

token
Your admin secret token.
function
Insert get-new-users.
datetime
User ID or date and time in the following format: YYYY-MM-DD HH:MM:SS. E.g. 2020-05-13 13:35:59. You can remove the time and leave only the date. The dates stored in the database are in UTC+0.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "880",
                                            "first_name": "User",
                                            "last_name": "#29938",
                                            "email": null,
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "visitor",
                                            "creation_time": "2020-05-13 08:58:18",
                                            "last_activity": "2020-05-13 09:07:39",
                                            "department": null,
                                            "token": "6d969f64f5ed6263714b9b39f3d3700b66f16820"
                                        },
                                        {
                                            "id": "879",
                                            "first_name": "User",
                                            "last_name": "#86773",
                                            "email": null,
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "visitor",
                                            "creation_time": "2020-05-13 08:38:41",
                                            "last_activity": "2020-05-13 08:58:12",
                                            "department": null,
                                            "token": "2e5064670707d06b661d04353f4a462ec927f19a"
                                        }
                                        ...
                                    ]
                                }
                            

get-online-users

Returns the online users including Agents.


Arguments

token
Your admin secret token.
function
Insert get-online-users.
exclude_id
Array of users IDs in JSON format to exclude from the returned values. Array syntax: [123, 123, 123, ...]
sorting
The name of the database table used for sorting. Default: creation_time.
agents
Set it to true to return only agents and admins. Default: false.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "881",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "email": null,
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "visitor",
                                            "creation_time": "2020-05-13 09:18:59",
                                            "last_activity": "2020-05-13 09:32:34",
                                            "department": null,
                                            "token": "e435a5c67f4276cdb9c6fc19b7c015990ffc3268"
                                        },
                                        {
                                            "id": "880",
                                            "first_name": "User",
                                            "last_name": "#29938",
                                            "email": null,
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "visitor",
                                            "creation_time": "2020-05-13 08:58:18",
                                            "last_activity": "2020-05-13 09:32:28",
                                            "department": null,
                                            "token": "6d969f64f5ed6263714b9b39f3d3700b66f16820"
                                        }
                                        ...
                                    ]
                                }
                            

get-users-with-details

Returns an array with the user IDs and details of the users who have the requested details.


Arguments

token
Your admin secret token.
function
Insert get-users-with-details.
details
Array of user details. E.g. [ "email", "phone" ].
user_ids
Array, or comma-separated string of user IDs. If this argument is set only the users which have their ID included are returned. Set it to all or false to search all users, set it to agents to search only agents and admins. Default: false.

Response

                                {
                                    "email": [
                                        {
                                            "id": 4561,
                                            "value": "albert@example.com"
                                        },
                                        {
                                            "id": 98436,
                                            "value": "jessica@example.com"
                                        },
                                        ...
                                    ],
                                    "phone": [
                                        {
                                            "id": 12563,
                                            "value": "+4462367136"
                                        },
                                        {
                                            "id": 778956,
                                            "value": "+4462999345"
                                        },
                                        ...
                                    ],
                                    ...
                                } 
                            

get-agent

Return the details of an agent or admin.


Arguments

token
Your admin secret token.
function
Insert get-agent.
agent_id
The agent ID.

Response

                                 {
                                    "success": true,
                                    "response": {
                                        "id": "123456",
                                        "first_name": "John",
                                        "last_name": "Doe",
                                        "email": "john@example.com",
                                        "profile_image": "https://havefunnels.com/user.svg",
                                        "user_type": "agent",
                                        "creation_time": "2020-05-12 14:28:57",
                                        "last_activity": "2020-05-12 14:28:57",
                                        "department": null,
                                        "token": "a521773c5a566a251c3fb00e93162b20ff955b12",
                                        "password": "",
                                        "details": [
                                            {
                                                "slug": "location",
                                                "name": "Location",
                                                "value": "New York, United States"
                                            },
                                            {
                                                "slug": "country_code",
                                                "name": "Country code",
                                                "value": "America/New_York"
                                            }
                                            ...
                                        ]
                                    }
                                }
                            

get-agents-ids

Returns an array with the IDs of Agents.


Arguments

token
Your admin secret token.
function
Insert get-agents-ids.
admins
Set it to false to exclude the admins. Default: true;

Response

                                [
                                    881,
                                    153,
                                    ...
                                ]
                            

get-user-from-conversation

Returns the user ID and email of the user, or last agent, of the given conversation.


Arguments

token
Your admin secret token.
function
Insert get-user-from-conversation.
conversation_id
The conversation ID.
agent
Set it to true to get the last agent who replied to the conversation. Default: false.

Response

                                {
                                  "id": "123456",
                                  "email": "email@example.com"
                                }
                            

agents-online

Check if at least one agent or admin is online.


Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

Return true if there are agents or admin online, or false if all Agents are offline.


search-users

Returns the users matching the search.


Arguments

token
Your admin secret token.
function
Insert search-users.
search
The string to search. The additional user details are supported too.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "881",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "email": null,
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "visitor",
                                            "creation_time": "2020-05-13 09:18:59",
                                            "last_activity": "2020-05-13 09:32:34",
                                            "department": null,
                                            "token": "e435a5c67f4276cdb9c6fc19b7c015990ffc3268"
                                        },
                                        {
                                            "id": "880",
                                            "first_name": "User",
                                            "last_name": "#29938",
                                            "email": null,
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "visitor",
                                            "creation_time": "2020-05-13 08:58:18",
                                            "last_activity": "2020-05-13 09:32:28",
                                            "department": null,
                                            "token": "6d969f64f5ed6263714b9b39f3d3700b66f16820"
                                        }
                                        ...
                                    ]
                                }
                            

Return {"success":true, "response":[]} if no users are found.


add-user

Create a new user.


Arguments

token
Your admin secret token.
function
Insert add-user.
first_name
The first name of the user. Default: User
last_name
The last name of the user. Default: #RANDOM-NUMBER
email
The email of the user. Default: empty.
profile_image
The profile picture of the user. Default:
password
The password of the user. Default: empty.
user_type
The user type of the user. Accepted values: visitor, lead, user, agent, admin. Default: visitor if the email is not provided, otherwise user.
extra
Array of additional user details in JSON format. Any detail is accepted. Built-in details (IDs): phone, city, language, country, birthday, company, facebook, twitter, linkedin, website, ip, country_code, browser, currency, location, os, time_zone, current_url.
Array syntax:
{"ID": ["value", "Name"], "ID": ["value", "Name"], ...}

Response

                                {
                                    "success": true,
                                    "response": 123456
                                }
                            

Other possible responses: ID of the new user on success, otherwise duplicate-email, invalid-user-type, MySQL error message.


update-user

Update the details of an existing user.


Arguments

token
Your admin secret token.
function
Insert update-user.
user_id
The ID of the user to update.
first_name
The first name of the user.
last_name
The last name of the user.
email
The email of the user. Insert NULL to delete the email.
profile_image
The profile picture of the user.
password
The password of the user.
user_type
The user type of the user. Accepted values: visitor, lead, user, agent, admin.
settings_extra
Array of additional user details in JSON format.
Array syntax:
{"ID": ["value", "Name"], "ID": ["value", "Name"], ...}

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

Other possible responses: duplicate-email, invalid-user-type, MySQL error message.


delete-user

Delete a user and all linked conversations and messages.


Arguments

token
Your admin secret token.
function
Insert delete-user.
user_id
The ID of the user to delete.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

delete-users

Delete multiple users and all linked conversations and messages.


Arguments

token
Your admin secret token.
function
Insert delete-users.
user_ids
Array of IDs of the users to delete. Array syntax: [123, 123, 123, ...]

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

is-online

Check if a user is online.


Arguments

token
Your admin secret token.
function
Insert is-online.
user_id
The ID of the user.

Response

true if online, false if offline.


current-url

Get or set the current URL of a user or the last visited URL.


Arguments

token
Your admin secret token.
function
Insert current-url.
user_id
The ID of the user
url
The URL to set as "Current URL". If this argument is set the function will only set the value and it will not return any URL.

Response

                                {
                                    "success": true,
                                    "response": "https://havefunnels.com"
                                }
                            

Return {"success":true,"response":false} if the URL is not found. Return {"success":true,"response":true} if the url argument is set.


count-users

Returns the total users' count grouped by user type.


Arguments

token
Your admin secret token.
function
Insert count-users.

Response

                                {
                                    "success": true,
                                    "response": {
                                        "all": "335",
                                        "lead": "288",
                                        "user": "15",
                                        "visitor": "28"
                                    }
                                }
                            

update-user-to-lead

Change the user type of a user to lead.


Arguments

token
Your admin secret token.
function
Insert update-user-to-lead.
user_id
The ID of the user.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

get-avatar

Generate the user profile image by using the first letter of first name, and last name, save the image, and return the image URL.


Arguments

token
Your admin secret token.
function
Insert get-avatar.
first_name
The first name of the user.
last_name
The last name of the user.

Response

                                https://example.com/havefunnels.com/uploads/13-04-21/9455859.png
                            

get-bot-id

Returns the HaveFunnels bot ID.


Response

                                123
                            

is-typing

Check if a user or an agent is typing a message in a conversation. This function will not work if Pusher is active.


Parameters

token
Your admin secret token.
function
Insert is-typing
user_id
The ID of the user, or the agent, to check.
conversation_id
The ID of conversation to check.

Response

Return true if the user is typing, otherwise, return false.


is-agent-typing

Check if an agent is typing a message in a conversation, and returns the agent details. This function will not work if Pusher is active.


Arguments

token
Your admin secret token.
function
Insert is-agent-typing
conversation_id
The ID of conversation to check.

Response

                                {
                                  "id": "",
                                  "first_name": "",
                                  "last_name": ""
                                }
                            

Return false if no agents are typing.


set-typing

Assign the typing status to a user or an agent relative to a conversation.


Parameters

token
Your admin secret token.
function
Insert set-typing
user_id
The ID of the user, or the agent.
conversation_id
The ID of the conversation.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

login

Login a user or an agent. A user can logins in two ways: via email and password, or via user ID and token.


Parameters

token
Your admin secret token.
function
Insert login
email
The email of the user to login. If this attribute is set you need to set also the password. Default: empty string.
password
The password of the user to login. If this attribute is set you need to set also the email. Default: empty string.
user_id
The ID of the user to login. If this attribute is set you need to set also the token. Default: empty string.
token
The token of the user to login. If this attribute is set you need to set also the user ID. You can get the token from the Users area by opening the profile box of a user. Default: empty string.

Response

                                [
                                    {
                                        "id": "913",
                                        "profile_image": "https://havefunnels.com/user.svg",
                                        "first_name": "User",
                                        "last_name": "#29902",
                                        "email": null,
                                        "user_type": "visitor",
                                        "token": "9b25351047ee758aa97ee4868d130cc1ceb8decf"
                                    },
                                    "YXNkWGNSeTdtRTdDYVkxVG8wckN4YWF6V2s0Tk1mczBSVHdQbHBpOWdmejVUTTdOUUxEUENhdUVoYmROWn..."
                                ]
                            

The last value is the encrypted login data ready to be stored in the sb-login cookie. Use the function SBF.loginCookie(response[1]); to store it. Returns false if login is unsuccessful.


logout

Logout the logged-in user.


Parameters

token
Your admin secret token.
function
Insert logout.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

The sb-login cookie must also be deleted from the user's browser.


update-login

Update the user details of the logged-in user. This function update all the user details, if a detail is not set it will be deleted from the database.


Parameters

token
Your admin secret token.
function
Insert update-login.
profile_image
The profile image URL of the user. Default: empty string.
first_name
The first name of the user. Default: empty string.
last_name
The last name of the user. Default: empty string.
email
The email of the user. Default: empty string.
department
Update the department of the user. This setting is used in the admin area. Default: empty string.

Response

YXNkWGNSeTdtRTdDYVkxVG8wckN4YWF6V2s0Tk1mczBSVHdQbHBpOWdmejVUTTdOUUxEUENhdUVoYmROWn...

The response must be saved into the sb-login cookie of the user's browser.


delete-leads

Delete all leads, including all the linked conversations and messages.


Parameters

token
Your admin secret token.
function
Insert delete-leads.

Response

                                true
                            

WEB API
Conversations

Conversations

Methods to manage conversations and messages.


get-conversation

Returns a conversation and the messages of the conversation.


Arguments

token
Your admin secret token.
function
Insert get-conversation.
conversation_id
The ID of the conversation.
user_id
The ID of the user linked to the conversation.

Response

                                {
                                    "success": true,
                                    "response": {
                                        "messages": [
                                            {
                                                "id": "2044",
                                                "user_id": "802",
                                                "message": "Hello!",
                                                "creation_time": "2020-05-0410:06:30",
                                                "attachments": "",
                                                "status_code": "0",
                                                "payload": "",
                                                "conversation_id": "946",
                                                "first_name": "Doe",
                                                "last_name": "John",
                                                "profile_image": "https://havefunnels.com/user.svg",
                                                "user_type": "lead"
                                            },
                                            {
                                                "id": "2045",
                                                "user_id": "377",
                                                "message": "Hello,howcanIhelp?",
                                                "creation_time": "2020-05-0410:06:33",
                                                "attachments": "",
                                                "status_code": "0",
                                                "payload": "",
                                                "conversation_id": "946",
                                                "first_name": "Bruce",
                                                "last_name": "Peterson",
                                                "profile_image": "https://havefunnels.com/agent.svg",
                                                "user_type": "agent"
                                            }
                                            ...
                                        ],
                                        "details": {
                                            "user_id": "802",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "lead",
                                            "id": "946",
                                            "title": "",
                                            "conversation_time": "2020-05-0410:06:30",
                                            "conversation_status_code": "3",
                                            "department": null
                                        }
                                    }
                                }
                            

Return {"success":true,"response":{"messages":[],"details":""}} if the conversation is not found.


get-conversations

Returns all the conversations. Each conversation includes the last message of the conversation.


Arguments

token
Your admin secret token.
function
Insert get-conversations.
pagination
Integer from 1 to N to limit the results number. Insert 1 to get the first 100 results, 2 for the results from 101 to 200, etc.
status_code
The status code of the returned conversations. Default: all the conversations in the inbox, excluding the conversations in the trash and archive. Status codes: live = 0, waiting answer from user = 1, waiting answer from agent = 2, archive = 3, trash = 4.
routing
Set it to true if the queue or routing is active in Settings > Miscellaneous. Default: false.
routing_unassigned
Set it to true to also view the conversations not assignged to any agent. Default: false.
department
Returns only the conversations assigned to the provided department ID.
source
Returns only the conversations created from the provided source. Available sources: em (Email), tk (Ticket), wa (WhatsApp), fb (Facebook Messenger), ig (Instagram), tw (Twitter), wc (WeChat), tx (Text message), gb (Google Business Messages).

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "1431",
                                            "user_id": "632",
                                            "message": "Hello!",
                                            "creation_time": "2020-04-24 10:53:35",
                                            "attachments": "",
                                            "status_code": "0",
                                            "payload": "",
                                            "conversation_id": "764",
                                            "message_user_type": "lead",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "profile_image": "https://havefunnels.com/media/user.svg",
                                            "conversation_status_code": "2",
                                            "user_type": "lead"
                                        },
                                        {
                                            "id": "1430",
                                            "user_id": "631",
                                            "message": "Hi! Can you help me?",
                                            "creation_time": "2020-04-24 10:38:37",
                                            "attachments": "",
                                            "status_code": "0",
                                            "payload": "",
                                            "conversation_id": "763",
                                            "message_user_type": "lead",
                                            "first_name": "Jessica",
                                            "last_name": "Brenson",
                                            "profile_image": "https://havefunnels.com/media/user.svg",
                                            "conversation_status_code": "2",
                                            "user_type": "lead"
                                        }
                                        ...
                                    ]
                                }
                            

get-new-conversations

Returns the conversations created after the given date/ID or with a message created after the given date/ID. Each conversation includes the last message of the conversation.


Arguments

token
Your admin secret token.
function
Insert get-new-conversations.
datetime
Conversation ID or date and time in the following format: YYYY-MM-DD HH:MM:SS. E.g. 2020-05-13 13:35:59. You can remove the time and leave only the date. The dates stored in the database are in UTC+0.
routing
Set it to true if the queue or routing is active in Settings > Miscellaneous. Default: false.
routing_unassigned
Set it to true to also view the conversations not assignged to any agent. Default: false.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "1431",
                                            "user_id": "632",
                                            "message": "Hello!",
                                            "creation_time": "2020-04-24 10:53:35",
                                            "attachments": "",
                                            "status_code": "0",
                                            "payload": "",
                                            "conversation_id": "764",
                                            "message_user_type": "lead",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "profile_image": "https://havefunnels.com/media/user.svg",
                                            "conversation_status_code": "2",
                                            "user_type": "lead"
                                        },
                                        {
                                            "id": "1430",
                                            "user_id": "631",
                                            "message": "Hi! Can you help me?",
                                            "creation_time": "2020-04-24 10:38:37",
                                            "attachments": "",
                                            "status_code": "0",
                                            "payload": "",
                                            "conversation_id": "763",
                                            "message_user_type": "lead",
                                            "first_name": "Jessica",
                                            "last_name": "Brenson",
                                            "profile_image": "https://havefunnels.com/media/user.svg",
                                            "conversation_status_code": "2",
                                            "user_type": "lead"
                                        }
                                        ...
                                    ]
                                }
                            

Return {"success":true, "response":[]} if no conversations are found.


get-user-conversations

Returns the conversations of a user. Each conversation includes the last message of the conversation.


Arguments

token
Your admin secret token.
function
Insert get-user-conversations.
user_id
The ID of the user.
exclude_id
Exclude a conversation from the results.
agents
Set it to true if the user is an agent or admin. Default: false.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "2266",
                                            "user_id": "377",
                                            "message": "Hello, how are you?",
                                            "creation_time": "2020-05-12 17:30:35",
                                            "attachments": "",
                                            "status_code": "0",
                                            "payload": "",
                                            "conversation_id": "995",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "profile_image": "https://havefunnels.com/media/user.svg",
                                            "user_type": "lead",
                                            "conversation_status_code": "3"
                                        },
                                        {
                                            "id": "2266",
                                            "user_id": "5",
                                            "message": "Please leave a feedback.",
                                            "creation_time": "2020-05-12 17:30:35",
                                            "attachments": "",
                                            "status_code": "0",
                                            "payload": "",
                                            "conversation_id": "995",
                                            "first_name": "Adam",
                                            "last_name": "Gates",
                                            "profile_image": "https://havefunnels.com/media/user.svg",
                                            "user_type": "agent",
                                            "conversation_status_code": "3"
                                        }
                                        ...
                                    ]
                                }
                            

Return {"success":true, "response":[]} if no conversations are found.


get-new-user-conversations

Returns the user conversations created after the given date/ID or with a message created after the given date/ID. Each conversation includes the last message of the conversation.


Arguments

token
Your admin secret token.
function
Insert get-new-user-conversations.
user_id
The ID of the user.
datetime
Conversation ID or date and time in the following format: YYYY-MM-DD HH:MM:SS. E.g. 2020-05-13 13:35:59. You can remove the time and leave only the date. The dates stored in the database are in UTC+0.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "2266",
                                            "user_id": "377",
                                            "message": "Hello, how are you?",
                                            "creation_time": "2020-05-12 17:30:35",
                                            "attachments": "",
                                            "status_code": "0",
                                            "payload": "",
                                            "conversation_id": "995",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "profile_image": "https://havefunnels.com/media/user.svg",
                                            "user_type": "lead",
                                            "conversation_status_code": "3"
                                        },
                                        {
                                            "id": "2266",
                                            "user_id": "5",
                                            "message": "Please leave a feedback.",
                                            "creation_time": "2020-05-12 17:30:35",
                                            "attachments": "",
                                            "status_code": "0",
                                            "payload": "",
                                            "conversation_id": "995",
                                            "first_name": "Adam",
                                            "last_name": "Gates",
                                            "profile_image": "https://havefunnels.com/media/user.svg",
                                            "user_type": "agent",
                                            "conversation_status_code": "3"
                                        }
                                        ...
                                    ]
                                }
                            

Return {"success":true, "response":[]} if no conversations are found.


search-conversations

Returns the conversations matching the search.


Arguments

token
Your admin secret token.
function
Insert search-conversations.
search
The string to search. The search function search into the attachment's names, the messages, and the user email, first name and last name.

Response

                                {
                                  "success": true,
                                  "response": [
                                    {
                                      "id": "2130",
                                      "user_id": "806",
                                      "message": "Hello! How can I help you?",
                                      "creation_time": "2020-05-05 15:45:38",
                                      "attachments": "",
                                      "status_code": "0",
                                      "payload": "",
                                      "conversation_id": "952",
                                      "message_user_type": "admin",
                                      "first_name": "User",
                                      "last_name": "#24254",
                                      "profile_image": "https://havefunnels.com/media/user.svg",
                                      "conversation_status_code": "4",
                                      "user_type": "lead"
                                    },
                                    {
                                      "id": "2127",
                                      "user_id": "805",
                                      "message": "Hi, I need help!",
                                      "creation_time": "2020-05-05 08:12:57",
                                      "attachments": "",
                                      "status_code": "0",
                                      "payload": "",
                                      "conversation_id": "951",
                                      "message_user_type": "user",
                                      "first_name": "Doe",
                                      "last_name": "John",
                                      "profile_image": "https://havefunnels.com/media/user.svg",
                                      "conversation_status_code": "0",
                                      "user_type": "user"
                                    }
                                    ...
                                  ]
                                }
                            

Return {"success":true, "response":[]} if no conversations are found.


search-user-conversations

Returns the conversations of the given user ID that matches the search terms.


Arguments

token
Your admin secret token.
function
Insert search-user-conversations.
search
The string to search. The search function supports attachment names, messages of the conversations, and the conversation title.
id
The ID of the user.

Response

                                {
                                  "success": true,
                                  "response": [
                                    {
                                        "id": "3362",
                                        "user_id": "2",
                                        "message": "Hello! How can I help you?",
                                        "creation_time": "2020-06-24 17:34:39",
                                        "attachments": "",
                                        "status_code": "0",
                                        "payload": "",
                                        "conversation_id": "1364",
                                        "first_name": "Doe",
                                        "last_name": "John",
                                        "profile_image": "https://havefunnels.com/media/user.svg",
                                        "user_type": "lead",
                                        "conversation_status_code": "0"
                                    },
                                    {
                                        "id": "3345",
                                        "user_id": "1195",
                                        "message": "Hi, I need help!",
                                        "creation_time": "2020-06-24 17:06:23",
                                        "attachments": "",
                                        "status_code": "0",
                                        "payload": "",
                                        "conversation_id": "1363",
                                        "first_name": "Doe",
                                        "last_name": "John",
                                        "profile_image": "https://havefunnels.com/media/user.svg",
                                        "user_type": "lead",
                                        "conversation_status_code": "2"
                                    }
                                    ...
                                  ]
                                }
                            

Return {"success":true, "response":[]} if no conversations are found.


new-conversation

Create a new conversation.


Arguments

token
Your admin secret token.
function
Insert new-conversation.
user_id
The ID of the user linked to the conversation.
status_code
The status code of the conversation. Default: 0. Status codes: live = 0, waiting answer from user = 1, waiting answer from agent = 2, archive = 3, trash = 4.
title
The title of the conversation. Default: empty.
department
The ID of a department. You can get the IDs from Settings > Miscellaneous > Departments. Default: -1.
agent_id
The ID of the agent assigned to the conversation. Default: -1.
source
Set the conversation source. Default: false.
extra
Extra conversation values. Default: false.

Response

                                {
                                    "success": true,
                                    "response": {
                                        "messages": [],
                                        "details": {
                                            "user_id": "882",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "lead",
                                            "id": "1007",
                                            "title": "",
                                            "conversation_time": "2020-05-15 12:51:39",
                                            "conversation_status_code": "0",
                                            "department": null
                                        }
                                    }
                                }
                            

Other possible responses: Conversation details array on success, otherwise user-not-found, MySQL error message


update-conversation-status

Update the status code of a conversation.


Arguments

token
Your admin secret token.
function
Insert update-conversation-status.
conversation_id
The ID of the conversation.
status_code
The status code of the conversation. Status codes: live = 0, waiting answer from user = 1, waiting answer from agent = 2, archive = 3, trash = 4.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

Return invalid-status-code if the status code is invalid.


update-conversation-department

Update the department of a conversation.


Arguments

token
Your admin secret token.
function
Insert update-conversation-department.
conversation_id
The ID of the conversation to update.
department
The ID of a department. You can get the IDs from Settings > Miscellaneous > Departments. The department ID is not validated, so double-check it to make sure it exists. Set it to false to remove the department.
message
A string containing a message for the agents notifications. If set, an all the agents assigned to the new department will be notified via email, push notification, and SMS.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

update-conversation-agent

Assign or update the agent assigned to a conversation.


Arguments

token
Your admin secret token.
function
Insert update-conversation-agent.
conversation_id
The ID of the conversation to update.
agent_id
The ID of a agent. Set it to false to remove the agent.
message
A string containing a message for the agent notifications. If set, the agent will be notified via email, push notification, and SMS.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

set-rating

Assign a rating to a conversation and optionally update a message of the conversation.


Arguments

token
Your admin secret token.
function
Insert set-rating.
settings
Enter the following array in JSON format: { "settings" : { "conversation_id": "ID", "rating": "RATING" }}. Replace ID with the ID of the conversation to rate, replace rating with 1 for a positive rating or with 0 for a negative one.
payload
The payload of the message in JSON format.
message_id
The ID of the message to update.
message
The content of the message.
user_id
The ID of the user of the conversation linked to the message.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

get-rating

Get the ratings of the conversations assigned to an agent.


Arguments

token
Your admin secret token.
function
Insert get-rating.
user_id
The ID of an agent.

Response

                                {
                                    "success": true,
                                    "response": [4,2]
                                }
                            

The response array: [count of positive ratings, count of negative ratings]. In the example above there are 4 positive ratings and 2 negative ratings.


get-new-messages

Returns the messages of a conversation created after the given date/ID.


Arguments

token
Your admin secret token.
function
Insert get-new-messages.
user_id
The ID of the user of the conversation.
conversation_id
The ID of the conversation.
datetime
Message ID or date and time in the following format: YYYY-MM-DD HH:MM:SS. E.g. 2020-05-13 13:35:59. You can remove the time and leave only the date. The dates stored in the database are in UTC+0.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "2319",
                                            "user_id": "377",
                                            "message": "Welcome to our support chat!",
                                            "creation_time": "2020-05-12 18:04:50",
                                            "attachments": "",
                                            "status_code": "0",
                                            "payload": "",
                                            "conversation_id": "1004",
                                            "first_name": "Virtual",
                                            "last_name": "Agent",
                                            "profile_image": "https://havefunnels.com/bot.svg",
                                            "user_type": "bot"
                                        },
                                        {
                                            "id": "2320",
                                            "user_id": "877",
                                            "message": "Thank you! I need help.",
                                            "creation_time": "2020-05-12 18:04:51",
                                            "attachments": "",
                                            "status_code": "0",
                                            "payload": "",
                                            "conversation_id": "1004",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "lead"
                                        }
                                        ...
                                    ]
                                }
                            

Return {"success":true, "response":[]} if no conversations are found.


send-message

Add a new message to an existing conversation.


Arguments

token
Your admin secret token.
function
Insert send-message.
user_id
The ID of the user who sends the message. Use the API 'get-bot-id' to get the ID of the bot.
conversation_id
The ID of the conversation.
message
The content of the message.
attachments
Array of attachments in JSON format. Array syntax: [["name", "link"], ["name", "link"], ...]. Replace name with the name of the attachment and link with the full URL of the attachment. It's up to you to upload attachments to a remote server, this argument only accepts the URL of the files already uploaded. Default: [].
conversation_status_code
The status code of the conversation. Status codes: live = 0, waiting answer from user = 1, waiting answer from agent = 2, archive = 3, trash = 4. Set it to skip to leave the current conversation status.
payload
Array in JSON format of additional information. You can insert any value. Array syntax: { "key": value, "key": value, ... }.
queue
Set it to true if the queue is active in Settings > Miscellaneous > Queue. Default: false.
recipient_id
The ID of the user who receive the message. Use this attribute to get the user language.

Response

                                {
                                    "success": true,
                                    "response": {
                                        "status": "success",
                                        "message-id": 123456,
                                        "queue": false,
                                        "notifications": ["sms", "email"]
                                    }
                                }
                            

Other possible responses: invalid-status-code, MySQL error message. The notifications response include the notifications sent to the user or agents.


update-message

Update an existing message.


Arguments

token
Your admin secret token.
function
Insert update-message.
message_id
The ID of the message.
message
The content of the message.
attachments
Array of attachments in JSON format. Array syntax: [["name", "link"], ["name", "link"], ...]. Replace name with the name of the attachment and link with the full URL of the attachment. It's up to you to upload attachments to a remote server, this argument only accepts the URL of the files already uploaded. Default: [].
payload
Array in JSON format of additional information. You can insert any value. Array syntax: { "key": value, "key": value, ... }.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

delete-message

Delete an existing message.


Arguments

token
Your admin secret token.
function
Insert delete-message.
message_id
The ID of the message to delete.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

update-messages-status

Update the status code of multiple messages to read.


Arguments

token
Your admin secret token.
function
Insert update-messages-status.
message_ids
Array of message IDs in JSON format, e.g. [1, 212, 124].
user_id
The ID of the user linked to the messages. Required to update the user's chat if Pusher is active.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

get-agents-in-conversation

Returns an array with all the agents with at least one message in the conversation.


Arguments

token
Your admin secret token.
function
Insert get-agents-in-conversation.
conversation_id
The conversation ID. It can be an array of conversation IDs.

Response

                                {
                                    "1546": [
                                        {
                                            "id": 5463,
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "conversation_id": 1546
                                        },
                                        {
                                            "id": 6413,
                                            "first_name": "Steven",
                                            "last_name": "Travolta",
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "conversation_id": 1546
                                        }, 
                                        ...
                                    ],
                                    ...
                                }
                            

transcript

Export a conversation in a CSV or TXT file and returns the URL.


Arguments

token
Your admin secret token.
function
Insert transcript .
conversation_id
The ID of the conversation to export.
type
Set it to csv to export the conversation as a CSV file, set it to txt to export the conversation as a text file, set it to false to use the type set in Settings > Admin > Transcript type. Default: false.

Response

                                {
                                    "success": true,
                                    "response": "https://havefunnels.com/uploads/conversation-1021.csv"
                                }
                            

Return {"success":true, "response":false} if the conversation is not found.


direct-message

Sends a direct message. Details here.


Arguments

token
Your admin secret token.
function
Insert direct-message .
user_ids
Array of user IDs, e.g. [45, 89, 65].
message
The message.
subject
The subject. Required only for emails. Default: false.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

count-conversations

Counts the number of conversations.


Arguments

token
Your admin secret token.
function
Insert count-conversations .
status_code
If set, only the conversations with the specified status are counted. Status codes: live = 0, waiting answer from user = 1, waiting answer from agent = 2, archive = 3, trash = 4. Default: false.

Response

                                {
                                    "success": true,
                                    "response": 123456
                                }
                            

check-conversations-assignment

Checks if a list of conversations is assigned to a department or agent and returns only the conversation IDs that are assigned to that agent and/or department.


Arguments

token
Your admin secret token.
function
Insert check-conversations-assignment.
conversation_ids
Array of IDs of the conversations to check, e.g. [45, 565, 68].
agent_id
The agent ID. Default: false.
department_id
The department ID. Default: false.

Response

                                {
                                    "success": true,
                                    "response": [1234, 5, ...]
                                }
                            

WEB API
More methods

More methods

Various methods that perform different actions.


send-email

Send an email to an existing user using the email templates of the Settings > Notifications area.


Arguments

token
Your admin secret token.
function
Insert send-email.
recipient_id
The ID of the user to which send the email.
message
The message of the email.
attachments
Array of attachments in JSON format. Array syntax: [["name", "link"], ["name", "link"], ...]. Replace name with the name of the attachment and link with the full URL of the attachment. It's up to you to upload attachments to a remote server, this argument only accepts the URL of the files already uploaded. Default: [].
sender_id
The ID of the sender user. Default: the active user ID.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

Other possible responses: missing-user-id-or-message, security-error, user-email-not-found, user-or-sender-not-found.


send-custom-email

Sends a generic email to an email address. The sender email and name are the ones set in Settings > Notifications > Email settings.


Arguments

token
Your admin secret token.
function
Insert send-custom-email.
to
The email address.
subject
The email subject.
message
The message of the email.
sender_suffix
Append the provided text to the sender name. Default: empty.

Response

                                true
                            

email-piping

Runs the email piping synchronization with HaveFunnels and converts emails to chat messages.


Arguments

token
Your admin secret token.
function
Insert email-piping.
force
Set it to true to the execution of the synchronization, by default the synchronization is executed a maximum of one time per minute. Default: false.

Response

                                true
                            

send-sms

Sends a text message to a user or agent. If the template argument is true, the message is translated automatically.


Arguments

token
Your admin secret token.
function
Insert send-sms.
message
The text message.
to
The phone number.
template
Set it to false to send only the message without the template content. Default: the message is sent within the template of Settings > SMS notifications.
conversation_id
Set it if the message contains the URL parameter {conversation_url_parameter}.
attachments
Array of attachment. Array syntax: [["name", "link"], ["name", "link"], ...] or ["link", "link", ...]. Replace name with the name of the attachment and link with the full URL of the attachment. It's up to you to upload attachments to a remote server, this argument only accepts the URL of the files already uploaded. Default: false.

Response

                                {
                                    "sid": "SM1f0e8ae6ade43cb3c0ce4525424e404f",
                                    "date_created": "Fri, 13 Aug 2010 01:16:24 +0000",
                                    "date_updated": "Fri, 13 Aug 2010 01:16:24 +0000",
                                    "date_sent": null,
                                    "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
                                    "to": "+15305431221",
                                    "from": "+15104564545",
                                    "body": "A Test Message",
                                    "status": "queued",
                                    "flags":["outbound"],
                                    "api_version": "2010-04-01",
                                    "price": null,
                                    "uri": "\/2010-04-01\/Accounts\/ACXXXX\/Messages\/SM1f004f.json"
                                }
                            

push-notification

Send a Push notification to an agent, a group of agents, or all agents. Push notifications must be enabled in the settings area.


Arguments

title
The title of the notification.
message
The message text.
icon
The icon of the notification. Default: HaveFunnels icon or notifications icon.
interest
The following values are accepted:
  • Agent or user ID
  • Array of agents or users IDs (ex. [1, 2, 3])
  • The string agents to send the notification to all agents without a department assigned.
  • The string all-agents to send the notification to all agents.
  • The string department-ID to send the notification to all agents assigned to the given department. Replace ID with the department ID.
conversation_id
The ID of the conversation to open when the user clicks the notification.

Response

                                {
                                    "publishId": "pubid-781799f5-6el4-4789-bc60-ee293543781"
                                }
                            

Return false it the Push notifications are disabled in the settings area.


get-setting

Returns a setting saved in the Settings area.


Arguments

token
Your admin secret token.
function
Insert get-setting.
setting
The setting ID. You can get the IDs of all the settings from the file resources\json\settings.json.

Response

                                {
                                    "success": true,
                                    "response": {
                                        "option": "value",
                                        "option": "value",
                                        ...
                                    }
                                }
                            

get-settings

Returns an array with all the settings.


Arguments

token
Your admin secret token.
function
Insert get-settings.

Response

                                {
                                    "success": true,
                                    "response": {
                                        "chat-manual-init": [
                                            false,
                                            "checkbox"
                                        ],
                                        "chat-login-init": [
                                            false,
                                            "checkbox"
                                        ],
                                        "init-dashboard": [
                                            true,
                                            "checkbox"
                                        ],
                                        "chat-timetable-disable": [
                                            false,
                                            "checkbox"
                                        ],
                                        "rtl": [
                                            false,
                                            "checkbox"
                                        ],
                                        "front-auto-translations": [
                                            true,
                                            "checkbox"
                                        ],
                                        ...
                                    }
                                }
                            

save-settings

Save all settings.


Arguments

token
Your admin secret token.
function
Insert save-settings.
settings
The settings array. Get it from get-settings.
external_settings
Settings saved to a dedicated row of the table sb_settings of the database.
external_settings_translations
Translations of the external settings.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

saved-replies

Returns an array with all the saved replies.


Arguments

token
Your admin secret token.
function
Insert saved-replies.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "reply-name": "hello",
                                            "reply-text": "Hello! How can I help?"
                                        },
                                        {
                                            "reply-name": "email",
                                            "reply-text": "Our email is support@example.com."
                                        },
                                        ...
                                    ]
                                }
                            

get-articles

Returns an array with all the articles or a single article.


Arguments

token
Your admin secret token.
function
Insert get-articles.
id
The ID of the article. The get the articles IDs, execute this method again without arguments. Default: -1.
count
The maximum number of returned articles. Default: all.
full
Boolean. Set it to true to get full length article contents. Default: false.
categories
Set it to true to get the array of all categories, in such a case the response is a double array, first item articles, second item categories. Set it to the category ID to get only the articles of the give category. Default: false.
articles_language
Get the articles in the language of the given language code. If there are no articles in the given language code, the articles in the default language are returned instead. Set it to all to get all the translations. Default: false.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "6P2Oq",
                                            "title": "What's new with the API V2?",
                                            "content": "The API V2 is the new iteration of o ...",
                                            "link": "https://havefunnels.com",
                                            "categories": ["K92kl"]
                                        },
                                        {
                                            "title": "Should I move to the new system?",
                                            "content": "Yes. The newest version of the Actions ...",
                                            "link": "https://havefunnels.com",
                                            "id": "qf7kD",
                                            "categories": ["ols85"]
                                        },
                                        ...
                                    ]
                                }
                            
                                {
                                    "success": true,
                                    "response": {
                                        "id": "6P2Oq",
                                        "title": "What's new with the API V2?",
                                        "content": "The API V2 is the new iteration of our developer API. The new API integrates...",
                                        "link": "https://havefunnels.com",
                                        "categories": ["K92kl"]
                                    }
                                }
                            

save-articles

Save all the articles. This function deletes all the existing articles and replace them with the ones of the given array.


Arguments

token
Your admin secret token.
function
Insert save-articles.
articles
The array with the articles. Use the API get-articles to get the articles array. Array syntax:
{"articles": [{"id": "", "title": "", "content": "", "link":"", "categories": []}, ...]}
translations
The array with the articles translations. Use the API get-articles to get the articles array. Array syntax:
{ "es": [{"id": "", "title": "", "content": "", "link":"", "categories": []}, ...], "it": [...], ...}

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

search-articles

Returns the articles matching the search.


Arguments

token
Your admin secret token.
function
Insert search-articles.
search
The string to search. The search function supports title and content.
articles_language
Search only the articles in the language of the given language code. If there are no articles in the given language code, the search returns the articles in the default language. Set it to all to get all the translations. Default: false.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "6P2Oq",
                                            "title": "What's new with the API V2?p",
                                            "content": "The API V2 is the new iteration of o ...",
                                            "link": "https://havefunnels.com",
                                            "categories": ["K92kl"]
                                        },
                                        {
                                            "title": "Should I move to the new API?",
                                            "content": "Yes. The newest version (V2) of the Actions ...",
                                            "link": "https://havefunnels.com",
                                            "id": "qf7kD",
                                            "categories": ["K92kl"]
                                        },
                                        ...
                                    ]
                                }
                            

Return {"success":true, "response":[]} if no articles are found.


get-articles-categories

Returns an array with all the articles categories.


Arguments

token
Your admin secret token.
function
Insert get-articles-categories.

Response

                                {
                                    "success": true,
                                    "response": [
                                        {
                                            "id": "Nv9PG",
                                            "title": "Business"
                                        },
                                        {
                                            "id": "csPVh",
                                            "title": "Travel And Tourism"
                                        },
                                        {
                                            "id": "pl5S7",
                                            "title": "Finance"
                                        },
                                        ...
                                    ]
                                }
                            

save-articles-categories

Save or update the articles categories array.


Arguments

token
Your admin secret token.
function
Insert save-articles-categories.
categories
Array of categories. Array syntax: [ { "id": "123456", "title": "Category name" }, { "id": "123456", "title": "Category name" }, ...]. Get the existing categories array with the method get-articles-categories.

Response

                                true
                            

article-ratings

Get the ratings of an article or add a new rating to it.


Arguments

token
Your admin secret token.
function
Insert article-ratings.
article_id
The ID of the article.
rating
The rating to add. Insert 1 for a positive rating or 0 for a negative one. If this argument is set the method adds the rating, otherwise returns the existing ratings. Default: false.

Response

                                {
                                    "success": true,
                                    "response": "[-1, 1, 1, -1]"
                                }
                            

Returns true if the rating argument is set.


get-versions

Returns the installed versions of HaveFunnels and the Apps.


Arguments

token
Your admin secret token.
function
Insert get-versions.

Response

                                {
                                    "success": true,
                                    "response": {
                                        "sb": "3.0.4",
                                        "dialogflow": "1.0.2",
                                        "slack": "1.0.3"
                                    }
                                }
                            

update

Start the update of HaveFunnels and all the apps. This method forces the update and always overwrite all plugin and apps files.


Arguments

token
Your admin secret token.
function
Insert update.

Response

                                {
                                    "success": true,
                                    "response": "success"
                                }
                            

wp-synch

Start the synchronization of the WordPress users and import the new WordPress users into HaveFunnels. This method is available only in the WordPress version.


Arguments

token
Your admin secret token.
function
Insert wp-synch .

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

app-get-key

Returns the License Key of a HaveFunnels App like the Slack App or the Dialogflow App.


Arguments

token
Your admin secret token.
function
Insert app-get-key .
app_name
The app name. E.g. dialogflow, slack, whatsapp, messenger...

Response

                                {
                                    "success": true,
                                    "response": "9300AB16-014ZEE12-91E199EA-997CEX40"
                                }
                            

app-activation

Activate an app, download it, and install it.


Arguments

token
Your admin secret token.
function
Insert app-activation .
app_name
The app name. E.g. dialogflow, slack, whatsapp, messenger...
key
The License Key of the App. You can get the key with the function app-get-key.

Response

                                {
                                    "success": true,
                                    "response": "success"
                                }
                            

csv-users

Export all the users in a CSV file and returns the URL.


Arguments

token
Your admin secret token.
function
Insert csv-users .

Response

                                {
                                    "success": true,
                                    "response": "https://havefunnels.com/uploads/users.csv"
                                }
                            

cron-jobs

Run the cron jobs. For more details click here.


Arguments

token
Your admin secret token.
function
Insert cron-jobs

Response

                                true
                            

pusher-trigger

Trigger an avent on a Pusher channel.


Arguments

token
Your admin secret token.
function
Insert pusher-trigger
channel
The channel name.
event
The event name.
data
Array of values. Syntax: [ "name" => "value" ].

Response

                                true
                            

chat-css

Returns the CSS style for the chat colors.


Arguments

token
Your admin secret token.
function
Insert chat-css
color_1
The first color in RGB or HEX format. Default: the first color saved in the settings area.
color_2
The second color in RGB or HEX format. Default: the second color saved in the settings area.
color_3
The third color in RGB or HEX format. Default: the third color saved in the settings area.

Response

The CSS code.


text-formatting-to-html

Convert the text formatting of chat messages to the equivalent HTML codes and returns the message.


Arguments

token
Your admin secret token.
function
Insert text-formatting-to-html
message
The text message.

Response

                                Lorem ipsum dolor <b>sit amet</b>, <i>consectetur adipiscing elit</i>, <code>sed</code> do eiusmod tempor incididunt. 
                            

clear-text-formatting

Remove the text formatting from a chat messages.


Arguments

token
Your admin secret token.
function
Insert clear-text-formatting
message
The text message.

Response

                                Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt. 
                            

get-notes

Returns the internal notes of a conversation.


Arguments

token
Your admin secret token.
function
Insert get-notes
conversation_id
The conversation ID.

Response

                                [
                                    {
                                        "id": 98207,
                                        "user_id": "1538",
                                        "name": "Lorem ipsum dolor sit amet",
                                        "message": "Lorem ipsum dolor sit amet, consectetur elit, sed do eiusmod tempor incididunt."
                                    },
                                    {
                                        "id": 76986,
                                        "user_id": "1596",
                                        "name": "Lorem ipsum dolor",
                                        "message": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor."
                                    },
                                    ...
                                ]
                            

add-note

Add a new internal note.


Arguments

token
Your admin secret token.
function
Insert add-note
conversation_id
The conversation ID to which link the note to.
user_id
The ID of the agent or admin who create the note.
name
The note name.
message
The note message.

Response

                                The note ID
                            

delete-note

Delete an internal note.


Arguments

token
Your admin secret token.
function
Insert delete-note
conversation_id
The ID of the conversation linked with the note.
note_id
The note ID.

Response

                                true
                            

automations-get

Returns all automations.


Arguments

token
Your admin secret token.
function
Insert automations-get

Response

                                [
                                    {
                                        "emails": [
                                            {
                                                "id": "0BOaG",
                                                "conditions": [
                                                    [
                                                        "datetime",
                                                        "is-between",
                                                        "10/04/2021 - 13/04/2021"
                                                    ],
                                                    [
                                                        "include_urls",
                                                        "contains",
                                                        "https://example.com"
                                                    ],
                                                    ...
                                                ],
                                                "name": "Excepteur sint",
                                                "message": "Excepteur sint occaecat cupidatat non proident.",
                                                "subject": "Cupidatat non proident"
                                            },
                                            ...
                                        ],
                                        "sms": [
                                            {
                                                "id": "vo2sY",
                                                "conditions": [
                                                    [
                                                        "datetime",
                                                        "is-exactly",
                                                        "13/04/2021"
                                                    ]
                                                ],
                                                "name": "Excepteur sint",
                                                "message": "Excepteur sint occaecat cupidatat non caecat cupidatat non proident"
                                            },
                                            {
                                                "id": "hwkmQ",
                                                "name": "Excepteur sint occaecat cupidatat non proident",
                                                "message": "Excepteur sint occaecat cupidatat non  occaecat cupidatat non proident"
                                            },
                                            ...
                                        ],
                                        "messages": [],
                                        "popups": [
                                            {
                                                "id": "ckN24",
                                                "conditions": [
                                                    [
                                                        "user_type",
                                                        "is-user"
                                                    ],
                                                    [
                                                        "languages",
                                                        "en"
                                                    ]
                                                ],
                                                "name": "s",
                                                "message": "Excepteur sint occaecat cupidatat non prcaecat cupidatat non proident",
                                                "title": "Excepteur sint occaecat",
                                                "profile_image": "https://example.com/image.jpg"
                                            },
                                            ...
                                        ],
                                        "design": [
                                            {
                                                "id": "bX1qA",
                                                "conditions": [
                                                    [
                                                        "user_type",
                                                        "is-user"
                                                    ]
                                                ],
                                                "name": "Excepteur sint",
                                                "message": "Excepteur sint occaecat cupidatat caecat cupidatat non proident",
                                                "title": "",
                                                "color_1": "rgb(0, 235, 26)",
                                                "color_2": "rgb(255, 0, 0)",
                                                "color_3": "rgb(255, 0, 0)",
                                                "background": "https://example.com/image.jpg",
                                                "brand": "https://example.com/image.jpg",
                                                "icon": "https://example.com/image.jpg"
                                            },
                                            ...
                                        ]
                                    },
                                    {
                                        "fr": {
                                            "messages": [
                                                {
                                                    "id": "y6hNE",
                                                    "name": "XXXX",
                                                    "message": "XXXX"
                                                }
                                            ]
                                        },
                                        ...
                                    }
                                ]
                            

automations-save

Save all automations.


Arguments

token
Your admin secret token.
function
Insert automations-save
automations
Automations array. Get it from sb_get_automations().
translations
Automations translations array. Get it from sb_get_automations().

Response

                                true
                            

automations-validate

Validate an automations.


Arguments

token
Your admin secret token.
function
Insert automations-validate
automation
The automation.

Response

                              
                                {
                                    "conditions": [
                                        [
                                            "user_type",
                                            "is-user"
                                        ],
                                        ...
                                    ],
                                    "repeat_id": ""
                                }
                            

Returns only the client-side conditions and invalid server-side conditions that can be validated in a later time. If no conditions are returned, the automation is valid and can be executed. Returns false if the automation is invalid.


automations-run-all

Validate all automations, execute the valid ones, and returns the automations with client-side conditions, invalid server-side conditions, and popup, design automations.


Arguments

token
Your admin secret token.
function
Insert automations-run-all

Response

                                [
                                    {
                                        "id": "0BOaG",
                                        "conditions": [
                                            [
                                                "datetime",
                                                "is-between",
                                                "10/04/2021 - 13/04/2021"
                                            ],
                                            [
                                                "include_urls",
                                                "contains",
                                                "https://example.com"
                                            ],
                                            ...
                                        ],
                                        "name": "Excepteur sint",
                                        "message": "Excepteur sint occaecat cupidatat non proident.",
                                        "subject": "Cupidatat non proident",
                                        "type": "emails"
                                    },
                                    {
                                        "id": "bX1qA",
                                        "conditions": [
                                            [
                                                "user_type",
                                                "is-user"
                                            ]
                                        ],
                                        "name": "Excepteur sint",
                                        "message": "Excepteur sint occaecat cupidatat caecat cupidatat non proident",
                                        "title": "",
                                        "color_1": "rgb(0, 235, 26)",
                                        "color_2": "rgb(255, 0, 0)",
                                        "color_3": "rgb(255, 0, 0)",
                                        "background": "https://example.com/image.jpg",
                                        "brand": "https://example.com/image.jpg",
                                        "icon": "https://example.com/image.jpg",
                                        "type": "design"
                                    },
                                    ...
                                ]
                            

automations-run

Execute a single automation and optionally validate it before executing it.


Arguments

token
Your admin secret token.
function
Insert automations-run
automation
The automation.
validate
Set it to true to validate the automation before executing it. Default: false.

Response

                              
                                true
                            

clean-data

This function performs the following tasks: Delete visitors older than 24h. Delete messages in trash older than 30 days. Archive messages with an agent reply as last message older than 24h.


Requirements

  • This is an admin function and it works only if the active user is an agent or an admin.

Parameters

token
Your admin secret token.
function
Insert clean-data.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

get-translation

Return the translations in the given language.


Parameters

token
Your admin secret token.
function
Insert get-translation.
language_code
The two-letter language code.

Response

                                {
                                    "name": "Arabic",
                                    "front": {
                                        "Activities": "أنشطة",
                                        "All": "الكل",
                                        "All articles": "جميع المقالات",
                                        "All fields are required.": "جميع الحقول مطلوبة",
                                        ...
                                    },
                                    "admin": {
                                        "A conversation was started by": "",
                                        "Activate": "",
                                        "Activation complete! Page reload in progress...": "",
                                        "Add a saved reply": "",
                                        ...
                                    }
                                }
                            

get-translations

Returns the translations of the back-end and the frond-end, for all the available languages.


Parameters

token
Your admin secret token.
function
Insert get-translations.

Response

                                {
                                    "ar": {
                                        "name": "Arabic",
                                        "front": {
                                            "Activities": "أنشطة",
                                            "All": "الكل",
                                            "All articles": "جميع المقالات",
                                            "All fields are required.": "جميع الحقول مطلوبة",
                                            ...
                                        },
                                        "admin": {
                                            "A conversation was started by": "",
                                            "Activate": "",
                                            "Activation complete! Page reload in progress...": "",
                                            "Add a saved reply": "",
                                            ...
                                        }
                                    },
                                    "da": {
                                        "name": "Danish",
                                        "front": {
                                            "Activities": "Aktiviteter",
                                            "All": "Alle",
                                            "All articles": "Alle artikler",
                                            "All fields are required.": "Alle felter skal udfyldes.",
                                            ...
                                        },
                                        "admin": {
                                            "A conversation was started by": "",
                                            "Activate": "",
                                            "Activation complete! Page reload in progress...": "",
                                            "Add a saved reply": "",
                                            ...
                                        }
                                    },
                                    ...
                                }
                            

save-translations

Save the translations and overwrite the translations files. Warning! If the given translations array is corrupted you could corrupt the translations files. Make a backup of the translations folder ( \resources\languages\ first. Each time a translation is saved a backup is created automatically in the uploads folder.


Parameters

token
Your admin secret token.
function
Insert save-translations.
translations
The translations array with all the translations. Use the method get-translations to get the array.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

get-departments

Returns the HaveFunnels departments.


Parameters

token
Your admin secret token.
function
Insert get-departments.

Response

                                {
                                    "1": {
                                        "name": "Example",
                                        "color": "yellow",
                                        "image": "https://example.com/image.png"
                                    },
                                    "2": {
                                        "name": "Example",
                                        "color": "red",
                                        "image": "https://example.com/image.png"
                                    },
                                    ...
                                }
                            

reports

Returns the the specified reports.


Parameters

token
Your admin secret token.
function
Insert reports.
name
The report name. Available values: conversations, missed-conversations, conversations-time, visitors, leads, users, agents-response-time, agents-conversations, agents-conversations-time, agents-ratings, countries, languages, browsers, os, subscribe, follow-up, registrations, articles-searches, articles-ratings, articles-views-single, articles-views, sms-automations, email-automations, message-automations, direct-sms, direct-emails, direct-messages.
date_start
The start date of the reports. Format: dd/mm/yyyy or yyyy-mm-dd. Default: false.
date_end
The end date of the reports. Format: dd/mm/yyyy or yyyy-mm-dd. Default: false.
date_end
The timezone of the user who is calling this function, e.g. Europe/London. Default: false.

Response

                             {
                                "title": "Conversations count",
                                "description": "Count of new conversations started by users.",
                                "data": {
                                    "03/2021": [
                                        2
                                    ],
                                    "04/2021": [
                                        0
                                    ],
                                    "05/2021": [
                                        0
                                    ],
                                    ...
                                },
                                "table": [
                                    "Date",
                                    "Count"
                                ],
                                "table-inverse": true,
                                "label_type": 1,
                                "chart_type": "line"
                             }  
                            

reports-update

Add a new row to the sb_reports database table.


Parameters

token
Your admin secret token.
function
Insert reports-update.
name
The report name. Available values: conversations, missed-conversations, conversations-time, visitors, leads, users, agents-response-time, agents-conversations, agents-conversations-time, agents-ratings, countries, languages, browsers, os, subscribe, follow-up, registrations, articles-searches, articles-ratings, articles-views-single, articles-views, sms-automations, email-automations, message-automations, direct-sms, direct-emails, direct-messages.
value
The row value. Default: false.
external_id
An external ID. Default: false.
extra
An extr avalue. Default: false.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

updates-available

Checks if there are updates available for HaveFunnels and the HaveFunnels apps.


Parameters

token
Your admin secret token.
function
Insert updates-available.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

Returns true if updates are available, otherwise returns false.


export-settings

Exports the HaveFunnels settings in JSON format.


Parameters

token
Your admin secret token.
function
Insert export-settings.

Response

                            {
                                "success": true,
                                "response": "http://havefunnels.com/script/uploads/settings_855776223.json"
                            }
                            

Returns the URL of the JSON file containing the settings.


import-settings

Imports the HaveFunnels settings in JSON format.


Parameters

token
Your admin secret token.
function
Insert import-settings.
file_url
The URL of the JSON file containing the settings.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

WEB API
Dialogflow

Dialogflow

Dialogflow Web API list. The Dialogflow App is required to use this set of APIs.


dialogflow-message

Send a message to Dialogflow and add the Dialogflow response to an existing conversation as a new message.


Arguments

token
Your admin secret token.
function
Insert dialogflow-message.
conversation_id
The ID of the conversation.
message
The string containing the text of the message.
token
The Dialogflow access token. For performance reasons always include this token. You will get the token after the first call of this method, from the response.
language
The language of the bot. Default: the main bot language.
attachments
Array of attachments in JSON format. Array syntax: [["name", "link"], ["name", "link"], ...]. Replace name with the name of the attachment and link with the full URL of the attachment. Dialogflow can read this array.
event
Trigger a Dialogflow event.
parameters
Array of optional information. Array syntax: { "name": "value", "name": "value", ...}.

Response

                                {
                                    "success": true,
                                    "response": {
                                        "token": "ya29.a0AfH6SE4SVIeOPWSfxRVfHNcJIoR-IvRTtrEe4P9VXHa",
                                        "messages": [
                                            {
                                                "message": "Hi! How are you doing?",
                                                "attachments": []
                                            }
                                        ],
                                        "response": {
                                            "responseId": "1a5e30d0-d6d4-4f0c-83e3-2fb9e31c2a5e-e15c53b8",
                                            "queryResult": {
                                                "queryText": "Hello",
                                                "action": "input.welcome",
                                                "parameters": [],
                                                "allRequiredParamsPresent": true,
                                                "fulfillmentText": "Hi! How are you doing?",
                                                "fulfillmentMessages": [
                                                    {
                                                        "platform": "ACTIONS_ON_GOOGLE",
                                                        "simpleResponses": {"simpleResponses": [ { "textToSpeech": "Example"} ]}
                                                    },
                                                    {
                                                        "text": { "text": [ "Hi! How are you doing?" ]  }
                                                    }
                                                ],
                                                "intent": {
                                                    "name": "projects/api-project-657752147/agent/intents/fe27e-f39d-4db3-92c2",
                                                    "displayName": "Default Welcome Intent"
                                                },
                                                "intentDetectionConfidence": 1,
                                                "languageCode": "en"
                                            },
                                            "alternativeQueryResults": [
                                                {
                                                    "queryText": "Hello",
                                                    "languageCode": "en"
                                                }
                                            ]
                                        }
                                    }
                                }
                            

Other possible responses: dialogflow-not-active, MySQL, or cURL error message.


dialogflow-get-intents

Returns the specified Dialogflow Intent or all Intents.


Arguments

token
Your admin secret token.
function
Insert dialogflow-get-intents .
intent_name
The intent name.
language
The agent language. Default: the main agent language.

Response

                                [
                                  {
                                    "name": "projects/example/agent/intents/1655ee2c-8116-45f1-95fu-93700ff32e8d",
                                    "displayName": "Default Welcome Intent",
                                    "priority": 500000,
                                    "mlEnabled": true,
                                    "events": [ "WELCOME" ],
                                    "trainingPhrases": [
                                      {
                                        "name": "43ca0e72-6055-4b88-af13-b0d241",
                                        "type": "EXAMPLE",
                                        "parts": [
                                          {
                                            "text": "just going to say hi"
                                          }
                                        ]
                                      },
                                      {
                                        "name": "5159aabc-8524-404f-b679-f2228db1",
                                        "type": "EXAMPLE",
                                        "parts": [
                                          {
                                            "text": "Hello"
                                          }
                                        ]
                                      },
                                      ...
                                    ],
                                    "action": "input.welcome",
                                    "messages": [
                                      {
                                        "text": {
                                          "text": [ "Hi! How are you doing?", "Hello! How can I help you?" ]
                                        }
                                      }
                                    ]
                                  },
                                  ...
                                ]
                            

dialogflow-create-intent

Create a new Intent in Dialogflow. The new Intent will be linked the agent synchronized in the admin area.


Arguments

token
Your admin secret token.
function
Insert dialogflow-create-intent .
expressions
Array with the training phrases. Array syntax: ["", "", ...].
response
String containing the response of the bot when the user input matches a user expression.
agent_language
The language code of the intent. Default: main agent language. For the languages codes list visit cloud.google.com/dialogflow/docs/reference/language. Default: false.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

dialogflow-update-intent

Update a Dialogflow Intent.


Arguments

token
Your admin secret token.
function
Insert dialogflow-update-intent .
intent_name
The Intent name. Get it with the function dialogflow-get-intents.
expressions
Array with the training phrases. Array syntax: ["", "", ...].
agent_language
The language code of the intent. Default: main agent language. For the languages codes list visit cloud.google.com/dialogflow/docs/reference/language. Default: false.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

dialogflow-entity

Create a new Entity in Dialogflow. The new Entity will be linked the agent synchronized in the admin area.


Arguments

token
Your admin secret token.
function
Insert dialogflow-entity .
entity_name
The unique Entity name.
synonyms
Array of Entity values. Single value syntax: ['value' => '', 'synonyms' => ['', '', ...]].
agent_language
The language code of the intent. For the languages codes list visit cloud.google.com/dialogflow/docs/reference/language. Default: false. Default: false.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

dialogflow-get-entity

Returns a Dialogflow Entity, or all Entities of the agent.


Arguments

token
Your admin secret token.
function
Insert dialogflow-get-entity .
entity_id
The ID of the Entity. Leave empty or insert all to get all Entities. Default: all.
agent_language
The language code of the intent. For the languages codes list visit cloud.google.com/dialogflow/docs/reference/language. Default: false.

Response

                                {
                                    "success": true,
                                    "response": {
                                      "name":"projects/small-talk-43da7/agent/entityTypes/t5td1425-2k13-16cc-a7bb-f119b8d94112a",
                                      "displayName":"opencart-products",
                                      "kind":"KIND_MAP",
                                      "autoExpansionMode":"AUTO_EXPANSION_MODE_DEFAULT",
                                      "entities":[
                                         {
                                            "value":"Abstract Print Cotton Blouse",
                                            "synonyms":[
                                               "Abstract Print Cotton Blouse"
                                            ]
                                         },
                                         {
                                            "value":"Cashmere Carpenter Beanie",
                                            "synonyms":[
                                               "Cashmere Carpenter Beanie"
                                            ]
                                         },
                                         ...
                                      ],
                                      "enableFuzzyExtraction":true
                                    }
                                }
                            

dialogflow-get-token

Generate a new Dialogflow Token and returns it. The token is valid for 1 hour.


Arguments

token
Your admin secret token.
function
Insert dialogflow-get-token .

Response

                                {
                                    "success": true,
                                    "response": "ya27.a1AfH6SMDu9dn0TfRbNVAIEsSoeJPD1_jr1JpfL15..."
                                }
                            

dialogflow-get-agent

Returns the details of the Dialogflow agent.


Arguments

token
Your admin secret token.
function
Insert dialogflow-get-agent .

Response

                                {
                                    "success": true,
                                    "response": {
                                        "parent":"projects/opencart-abcde",
                                        "displayName": "ABCDE",
                                        "defaultLanguageCode": "en",
                                        "timeZone": "Europe/Madrid",
                                        "enableLogging": true,
                                        "matchMode": "MATCH_MODE_HYBRID" ,
                                        "classificationThreshold": 0.6,
                                        "apiVersion": "API_VERSION_V2",
                                        "tier": "TIER_STANDARD"
                                    }
                                }
                            

dialogflow-set-active-context

Activate a Dialogflow context in the active user session.


Arguments

token
Your admin secret token.
function
Insert dialogflow-set-active-context .
context_name
The context name.
user_id
The ID of the user linked to the context.
parameters
Array of Dialogflow parameters linked to the context. Example: { "opencart-products": "Running Shoes" }.
life_span
The context lifespan. Default: 5.
token
Dialogflow Session Token(it's not the Refresh Token). Pass it if you have it, otherwise it will be generated. Default: false.
language
The agent language. Default: main agent language.

Response

                                {
                                   "success":true,
                                   "response": {
                                      "responseId":"09f2f825-3dbf-4c27-a5bb-6bd0b71e44b9-1d846bd2",
                                      "queryResult":{
                                         "queryText":"sb-trigger-context",
                                         "parameters":[

                                         ],
                                         "outputContexts":[
                                            {
                                               "name":"projects/abcde/agent/sessions/208/contexts/abcde",
                                               "lifespanCount":4,
                                               "parameters":{
                                                  "opencart-products":"Sampras Vibration Dampener"
                                               }
                                            }
                                         ],
                                         "languageCode":"en"
                                      }
                                   }
                                }
                            

dialogflow-curl

Send data to Dialogflow. Use this method to submit the queries to Dialogflow.


Arguments

token
Your admin secret token.
function
Insert dialogflow-curl .
query
The Dialogflow query in JSON format.
language
The Dialogflow agent language. Default: false.
type
The call type. Supported values: POST, GET, PATCH. Default: POST.
token
Dialogflow Session Token(it's not the Refresh Token). Pass it if you have it, otherwise it will be generated. Default: false.

Response

                                {
                                   "success": true,
                                   "response": "..."
                                }
                            

Returns the Dialogflow response. More details at https://cloud.google.com/dialogflow/es/docs/reference/rest/v2-overview


dialogflow-human-takeover

Trigger the Dialogflow human takeover.


Arguments

token
Your admin secret token.
function
Insert dialogflow-human-takeover .
conversation_id
The conversation ID.
auto_messages
Set it to true to send also offline, follow_up and subscribe messages if they are active. Default: false.

Response

                                {
                                   "success": true,
                                   "response": [true, true, ...]
                                }
                            

dialogflow-smart-reply

Returns the smart reply suggestions.


Arguments

token
Your admin secret token.
function
Insert dialogflow-smart-reply .
conversation_id
message
The text message from which generate the suggestions.
smart_reply_data
Set it to false.
dialogflow_language
The Dialogflow agent language. Defualt: false.
token
The Dialogflow access token. Default: false.
language_detection
Set it to true to detect the agent language by the message.

Response

                                {
                                   "suggestions": [
	                                   "I would be happy to help!",
	                                    "What can I do for you?",
                                       ...
	                                ],
	                                "token": "ya29.a0AVvZVsrU7gAannWzuztBR-AphpjdWr0JrPoq9au0Ai",
	                                "detected_language": false,
	                                "smart_reply": false
                                }
                            

open-ai-message

Send a message to OpenAI and return the response, optionally add the response to an existing conversation as a new message.


Arguments

token
Your admin secret token.
function
Insert open-ai-message .
message
The string containing the text of the message.
max_tokens
The max number of OpenAI tokens that can be used to generate the message. This parameter changes the response message length. Default: 100.
conversation_id
The ID of the conversation. It set, the OpenAI response is added to an existing conversation as a new message. Default: false.

Response

                                {
                                   "success": true,
                                   "response": [true, 'Excepteur sint occaeca...']
                                }
                            

Return an array with the first value set to true on success, false on error. The second value is the OpenAI message on success, or the error message on error.


open-ai-curl

Call the OpenAI API (ChatGPT) and return the response.


Arguments

token
Your admin secret token.
function
Insert open-ai-curl .
url_part
The URL part of the API. For example, if you want to call https://api.openai.com/v1/completions, enter only completions.
post_fields
The parameters of the API in JSON format.
type
The HTTP call type. Allowed values: GET, POST, UPLOAD.

Response

                                {
                                   "success": true,
                                   "response": "..."
                                }
                            

Returns the openAI response. More details at https://beta.openai.com/docs/api-reference/.


google-translate

Translate multiple strings via Google Translate.


Parameters

token
Your admin secret token.
function
Insert google-translate.
strings
Array of the strings to translate, e.g. ["Hello world", "How are you?"].
language_code
The two-letter language code of the language you want to translate into.

Response

                                {
                                    "success": true,
                                    "response": [
                                        [
                                            {
                                                "translatedText": "Ciao mondo",
                                                "detectedSourceLanguage": "en"
                                            },
                                            {
                                                "translatedText": "Come stai?",
                                                "detectedSourceLanguage": "en"
                                            }
                                        ],
                                        "ya29.a0AVvZVsqVHw9U7LxFukwIoQEfwA3JyT_2SSRnP2nX4oQ_XyMP9GQk2O"
                                    ]
                                }
                            

google-language-detection-update-user

Detect the language of a text and assign it to a user.


Parameters

token
Your admin secret token.
function
Insert google-language-detection-update-user.
string
The text from which to detect the language.
user_id
The user ID.

Response

                                {
                                   "success": true,
                                   "response": true
                                }
                            

WEB API
Slack

Slack

Dialogflow Web API list. The Slack App is required to use this set of APIs.

send-slack-message

Send a message to Slack. The Slack App is required and Slack must be active in the settings area.


Arguments

token
Your admin secret token.
function
Insert send-slack-message.
user_id
The ID of the user linked to the message.
full_name
The name of the sender, it will appear in Slack on the left of the message. It should be an agent's name if the message is from an agent, otherwise the user's name.
profile_image
The profile image of the sender, it will appear in Slack on the left of the message. It should be an agent's profile image if the message is from an agent, otherwise the user's profile image. Supported formats: PNG and JPG. Default:
message
The content of the message.
attachments
Array of attachments in JSON format. Array syntax: [["name", "link"], ["name", "link"], ...]. Replace name with the name of the attachment and link with the full URL of the attachment. It's up to you to upload attachments to a remote server, this argument only accepts the URL of the files already uploaded. Default: [].
channel
The Slack channel linked to the message. For performance reasons always include the channel. You will get the channel after the first call of this method, from the response (example: C011JFFGSKY).

Response

                                {"success":true,"response":["C011JFFGSKY"]}
                            

Other possible responses: slack-not-active, MySQL or cURL error message.


archive-slack-channels

Archive all the Slack channels. If you have a lot of channels, this operation may take a long time to complete and you could need to execute it again multiple times. Important: All of your slack channels will be archived.


Arguments

token
Your admin secret token.
function
Insert archive-slack-channels.

Response

                                {
                                    "success": true,
                                    "response": true
                                }
                            

slack-users

Returns the agents-slack members' connection information.


Arguments

token
Your admin secret token.
function
Insert slack-users.

Response

                                {
                                    "success": true,
                                    "response": {
                                        "slack_users": [
                                            {
                                                "id": "U328T701Z",
                                                "name": "John Doe"
                                            },
                                            {
                                                "id": "UR5F0GK7T",
                                                "name": "Jane Doe"
                                            }
                                            ...
                                        ],
                                        "agents": [
                                            {
                                                "id": "2",
                                                "name": "Alex Smith"
                                            },
                                            {
                                                "id": "445",
                                                "name": "Johnny Doe"
                                            },
                                            {
                                                "id": "724",
                                                "name": "Andrew Doe"
                                            }
                                            ...
                                        ],
                                        "saved": {
                                            "U328T701Z": "445",
                                            "UR5F0GK7T": "2"
                                            ...
                                        }
                                    }
                                }
                            

slack-presence

Check if a Slack agent is online, or if at least one agent is online, or returns all the online users.


Arguments

token
Your admin secret token.
function
Insert slack-presence.
agent_id
The ID of the agent to check. Default: false.
list
Set it to true to return all online users. Default: false.

Response

                                {
                                    "success": true,
                                    "response": online
                                }
                            

Returns online or offline for single agent check. Returns an array of user IDs for multiple users check.


slack-channels

Returns the list of all Slack channels, including archived channels.


Arguments

token
Your admin secret token.
function
Insert slack-channels.

Response

{
    "ok": true,
    "channels": [
        {
            "id": "C012AB3CD",
            "name": "general",
            "is_channel": true,
            "is_group": false,
            "is_im": false,
            "created": 1449252889,
            "creator": "U012A3CDE",
            "is_archived": false,
            "is_general": true,
            "unlinked": 0,
            "name_normalized": "general",
            "is_shared": false,
            "is_ext_shared": false,
            "is_org_shared": false,
            "pending_shared": [],
            "is_pending_ext_shared": false,
            "is_member": true,
            "is_private": false,
            "is_mpim": false,
            "updated": 1678229664302,
            "topic": {
                "value": "Company-wide announcements and work-based matters",
                "creator": "",
                "last_set": 0
            },
            "purpose": {
                "value": "This channel is for team-wide communication and announcements. All team members are in this channel.",
                "creator": "",
                "last_set": 0
            },
            "previous_names": [],
            "num_members": 4
        },
        {
            "id": "C061EG9T2",
            "name": "random",
            "is_channel": true,
            "is_group": false,
            "is_im": false,
            "created": 1449252889,
            "creator": "U061F7AUR",
            "is_archived": false,
            "is_general": false,
            "unlinked": 0,
            "name_normalized": "random",
            "is_shared": false,
            "is_ext_shared": false,
            "is_org_shared": false,
            "pending_shared": [],
            "is_pending_ext_shared": false,
            "is_member": true,
            "is_private": false,
            "is_mpim": false,
            "updated": 1678229664302,
            "topic": {
                "value": "Non-work banter and water cooler conversation",
                "creator": "",
                "last_set": 0
            },
            "purpose": {
                "value": "A place for non-work-related flimflam, faffing, hodge-podge or jibber-jabber you'd prefer to keep out of more focused work-related channels.",
                "creator": "",
                "last_set": 0
            },
            "previous_names": [],
            "num_members": 4
        }
    ],
    "response_metadata": {
        "next_cursor": "dGVhbTpDMDYxRkE1UEI="
    }
}
                            

Webhooks

slack-message-sent

Webhook sent when a message is sent to Slack.


Response

                                {
                                    "function": "slack-message-sent",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                        "message": "Hi! How are you doing?",
                                        "conversation_id": "1057",
                                        "slack_channel": "C028BGU6TTT"
                                    }
                                }
                            

WEB API
Webhooks

Webhooks

Webhooks are automated messages sent from HaveFunnels to a URL when something happens. They contain custom data and are sent to a unique URL defined by you.

Usage

  • Login to the administration area and go to Settings > Miscellaneous > Webhooks.
  • Enter the destination URL. HaveFunnels will send the data to this URL. This URL should point to a PHP file that can read the data received, you can use the code $response = json_decode(file_get_contents('php://input'), true); to get the data, the $response variable will be an array.
  • Insert in the Secret Key field a secret password of your choice. This key is included in all the Webhooks, you can use it to validate the Webhook and make sure it is sent by HaveFunnels and not from someone else.
  • Activate the Webhooks and save. HaveFunnels will now start sending the Webhooks of the list below to your URL.
  • The key sender-url is included in all the Webhooks and contains the URL from which the webhook is sent.
  • The setting Active webhooks defines what webhooks are active. Enter names of the webhooks separated by commas. Leave it empty to enable all webhooks.

message-sent

Webhook sent when a new message is sent by a user or an agent.


Response

                                {
                                    "function": "message-sent",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                        "user_id": "947",
                                        "conversation_user_id": "947",
                                        "conversation_id": "1057",
                                        "conversation_status": "-1",
                                        "message_id": "2574",
                                        "message": "Hello! How are you?"
                                    }
                                }
                            

email-sent

Webhook sent when a notification email is sent to a user or to an agent.


Response

                                {
                                    "function": "email-sent",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                        "recipient_id": "957",
                                        "message": "Hello! How can I help you?"
                                    }
                                }
                            

sms-sent

Webhook sent when a new text message is sent by a user or an agent.


Response

                                {
                                    "function": "sms-sent",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                        "recipent_id": "947",
                                        "message": "Hello! How are you?",
                                        "response": {
                                            "sid": "SM1f0e8ae6ade43cb3c0ce4525424e404f",
                                            "date_created": "Fri, 13 Aug 2010 01:16:24 +0000",
                                            "date_updated": "Fri, 13 Aug 2010 01:16:24 +0000",
                                            "date_sent": null,
                                            "account_sid": "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
                                            "to": "+15305431221",
                                            "from": "+15104564545",
                                            "body": "A Test Message",
                                            "status": "queued",
                                            "flags":["outbound"],
                                            "api_version": "2010-04-01",
                                            "price": null,
                                            "uri": "\/2010-04-01\/Accounts\/ACXXXX\/Messages\/SM1f004f.json"
                                        }
                                    }
                                }
                            

new-messages-received

Webhook sent when a new message is received.


Response

                                {
                                    "function": "new-messages-received",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": [
                                        {
                                            "details": {
                                                "id": "2575",
                                                "user_id": "947",
                                                "message": "Hello! How are you?",
                                                "creation_time": "2020-05-27 08:26:59",
                                                "attachments": "",
                                                "status_code": "0",
                                                "conversation_id": "1057",
                                                "first_name": "Doe",
                                                "last_name": "John",
                                                "profile_image": "https://havefunnels.com/user.svg",
                                                "user_type": "user",
                                                "full_name": "Doe John"
                                            }
                                        }
                                    ]
                                }
                            

bot-message

Webhook sent when the Dialogflow send a reply to a user message.


Response

                                {
                                    "function": "bot-message",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                        "response": {
                                            "token": "ya29.a0Afkjh8MADFYeT4BgCy3917xqSDdVvw4mgVHrgrLDcgRk9ajWoQAgdjv5e...",
                                            "messages": [
                                                {
                                                    "message": "Hi! How are you doing?"
                                                }
                                            ],
                                            "response": {
                                                "responseId": "46d2c208-2a7f-4ca2-bd7d-6636982b8bee-0f0e27e1",
                                                "queryResult": {
                                                    "queryText": "hi",
                                                    "action": "input.welcome",
                                                    "allRequiredParamsPresent": "true",
                                                    "fulfillmentText": "Hi! How are you doing?",
                                                    "fulfillmentMessages": [
                                                        {
                                                            "text": {
                                                                "text": [
                                                                    "Hi! How are you doing?"
                                                                ]
                                                            }
                                                        }
                                                    ],
                                                    "outputContexts": [
                                                        {
                                                            "name": "projects/api-project-655517752147/agent/sessions...",
                                                            "lifespanCount": "1",
                                                            "parameters": {
                                                                "no-input": "0",
                                                                "no-match": "0"
                                                            }
                                                        }
                                                    ],
                                                    "intent": {
                                                        "name": "projects/api-project-655517752147/agent/intents...",
                                                        "displayName": "Default Welcome Intent"
                                                    },
                                                    "intentDetectionConfidence": "1",
                                                    "languageCode": "en"
                                                },
                                                "alternativeQueryResults": [
                                                    {
                                                        "queryText": "hi",
                                                        "outputContexts": [
                                                            {
                                                                "name": "projects/api-project-655517752147/agent...",
                                                                "parameters": {
                                                                    "no-match": "1",
                                                                    "no-input": "0"
                                                                }
                                                            }
                                                        ],
                                                        "languageCode": "en"
                                                    }
                                                ]
                                            }
                                        },
                                        "message": "Hello",
                                        "conversation_id": 123456
                                    }
                                }
                            

message-deleted

Webhook sent when a message is deleted.


Response

                                {
                                    "function": "message-deleted",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": "2595"
                                }
                            

The data key contains the ID of the deleted message.


rich-message

Webhook sent when the user submits the values inserted in a Rich Message. All the Rich Messages that require the submitting of data fire this Webhook, some of them are the follow-up email form, the registration form, the buttons.


Response

                                {
                                    "function": "rich-message",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                            "result": true,
                                            "data": {
                                                "type": "inputs",
                                                "result": {
                                                    "name": [
                                                        "Doe Jhon",
                                                        "Name"
                                                    ],
                                                    "your-email": [
                                                        "example@gmail.com",
                                                        "Your Email"
                                                    ],
                                                    "site-url": [
                                                        "www.example.com",
                                                        "Site URL"
                                                    ],
                                                    ...
                                                }
                                            },
                                            "id": "example"
                                        }
                                    }
                                }
                            

new-conversation

Webhook sent when a new conversation is received.


Response

                                {
                                    "function": "new-conversation-received",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                        "details": {
                                            "user_id": "947",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "user",
                                            "id": "1057",
                                            "title": "",
                                            "conversation_time": "2020-05-27 08:19:18",
                                            "conversation_status_code": "2",
                                            "department": "",
                                            "agent_id": ""
                                        }
                                    }
                                }
                            

new-conversation-created

Webhook sent when a user starts a new conversation.


Response

                                {
                                    "function": "new-conversation-created",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                        "details": {
                                            "user_id": "947",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "user_type": "user",
                                            "id": "1057",
                                            "title": "",
                                            "conversation_time": "2020-05-27 08:19:18",
                                            "conversation_status_code": "2",
                                            "department": "",
                                            "agent_id": ""
                                        }
                                    }
                                }
                            

conversation-status-updated

Webhook sent when the status code of a conversation changes.


Response

                                {
                                    "function": "conversation-status-updated",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                        "conversation_id": "1057",
                                        "status_code": "0"
                                    }
                                }
                            

Status codes: live = 0, waiting answer from user = 1, waiting answer from agent = 2, archive = 3, trash = 4.


login

Webhook sent when a user login successfully from the login form of the chat. This Webhook is sent only if the login is successful.


Response

                                {
                                    "function": "login",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                        "details": {
                                            "id": "948",
                                            "profile_image": "https://havefunnels.com/user.svg",
                                            "first_name": "Doe",
                                            "last_name": "John",
                                            "email": "email@example.com",
                                            "user_type": "user",
                                            "token": "9a4642dd232291ad658646bdbb8792c2392bb852"
                                        }
                                    }
                                }
                            

registration

Webhook sent when a user registers successfully from the registration form of the chat. This Webhook is sent only if the registration is successful. This Webhook is sent also if the registration is updated via the registration form of a Rich Message.


Response

                                {
                                    "function": "registration",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                        "user": {
                                            "profile_image": [
                                                "https://havefunnels.com/user.svg",
                                                "Profile image"
                                            ],
                                            "first_name": [
                                                "Doe",
                                                "First name"
                                            ],
                                            "last_name": [
                                                "John",
                                                "Last name"
                                            ],
                                            "email": [
                                                "example@email.com",
                                                "Email"
                                            ],
                                            "password": [
                                                "12345678",
                                                "Password"
                                            ],
                                            "password-check": [
                                                "12345678",
                                                "Repeat password"
                                            ],
                                            "user_type": [
                                                "user",
                                                ""
                                            ]
                                        },
                                        "extra": {
                                            "phone": [
                                                "+02123456789",
                                                "Phone"
                                            ],
                                            "city": [
                                                "London",
                                                "City"
                                            ],
                                            ...
                                        }
                                    }
                                }
                            

user-deleted

Webhook sent when a user is deleted.


Response

                                {
                                    "function": "user-deleted",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": "951"
                                }
                            

The data key contains the ID of the deleted user.

new-email-address

Webhook sent when a user register his email via the follow-up message or registration form.


Response

                                {
                                    "function": "new-email-address",
                                    "key": "xxxxxxxx",
                                    "sender-url": "https://example.com"
                                    "data": {
                                        "name": "John Doe",
                                        "email": "example@email.com"
                                    }
                                }