Integrations
The Integrations screen connects ChatISP to the systems of the internet service provider (ISP): the ERP (IXC, Hubsoft, SGP, Gesprov, ReceitaNet or Pipesoft), Ravicor for the subscriber network, any other system with an API, the ChatISP public API keys and the outgoing webhooks. This page explains each card, the data requested, what each integration enables in customer service and how to check that everything is working.
Overview
The screen is in the Integrations menu, with the subtitle Connect ChatISP to your systems. Access requires the Integrations permission in the profile (see Users and profiles).
| Card | What it is for |
|---|---|
| Ravicor | The network source for customer service: technical snapshot of the connection, Wi-Fi and reboot of the customer equipment through the ACS. It also lets you import the ERPs registered in Ravicor. |
| ChatISP API Plan feature | Keys for other systems to send messages, look up conversations and open service requests. |
| Webhooks Plan feature | HTTP notifications to external systems when something happens in customer service. |
| ERPs and external systems | The registry and billing sources for customer service: the certified ERPs connected directly, with a local subscriber mirror, and any other system through the generic API integration. |
| Ravisign | Electronic signature of contracts through the chat, with Ravisign, a separate Ravi Systems product. See Contracts. |
Other connections to external services live outside this screen: the WhatsApp numbers and the official Meta API (WhatsApp connections), Google Calendar, connected by each user in My account (see Google Calendar), and the system email (see System email).
The ERP can also be connected in the first step of the setup wizard, with the same fields as this screen. Whatever is registered there shows up here, and vice versa.
All integrations on this screen are called by the ChatISP server, not by the browser of the person using it. The address of the ERP, of Ravicor and of the external systems must be reachable from that server. In ChatISP Cloud, which runs on Ravi Systems infrastructure, this means an address accessible from the internet; an ERP or Ravicor that only answers inside the ISP network cannot be reached.
Ravicor
Ravicor is the network management platform from Ravi Systems. Connected to ChatISP, it is responsible for everything network related in the customer record; the ERP remains the source of registry and billing data.
What the connection enables
- The subscriber network view on the conversation card: concentrator, PPPoE session, OLT and ONU signal, equipment, Wi-Fi, connected devices, outages and reboots (see Customer record: network).
- Actions on the customer equipment: Reboot and Edit Wi-Fi, by the agent or by the AI.
- For the AI, also the speed test and the analysis and change of the Wi-Fi channel, when the installed Ravicor already has these diagnostics.
- Manual customer linking through the registry search (see Manual link).
- The Import from Ravicor button, which brings the ERPs registered in Ravicor into ChatISP.
- While no ERP is registered in ChatISP, customer identification by phone number is done by Ravicor.
Card states
| Label | Meaning |
|---|---|
| Not configured | No connection. The card shows the Ravicor address field and the Connect button. |
| Waiting for release | The request was sent and is waiting to be released in Ravicor. The card shows the steps Request sent, Release in Ravicor and Connected. |
| Connected | Pairing complete. The text states which Ravicor ChatISP is connected to and that access can be removed there at any time. |
| Configured | Connection made with a manually entered API key (see below). |
Connect by pairing (recommended)
With pairing, nobody copies any key: ChatISP requests access, someone releases it in Ravicor and the key arrives on its own, stored encrypted. It is not shown on any screen.
- On the Ravicor card, fill in Ravicor address with the IP or hostname of the server (for example
192.168.0.10). It can also be the full URL. Without a protocol, ChatISP tries HTTPS and, if there is no certificate, HTTP. - Click Connect. The card changes to Waiting for release.
- In Ravicor, open Settings › Integrations and release the ChatISP request.
- Go back to ChatISP: the screen checks on its own every few seconds and changes to Connected as soon as the request is released, with the notice Integration confirmed. There is no need to reload.
While waiting, Cancel request gives up on the connection. If the request is declined or removed in Ravicor, the card goes back to the start with the notice The connection was removed in Ravicor.
| Message when connecting | What to do |
|---|---|
| Invalid address. | Enter only the IP, the hostname or the URL, without spaces. |
| Could not reach Ravicor at this address. | Check the address and whether the ChatISP server can reach Ravicor over the network. |
| This Ravicor does not accept the automatic connection yet. Update it or enter the API key manually. | Ravicor version older than pairing: update Ravicor. |
| Ravicor has too many requests waiting. Release or decline the pending ones there and try again. | Resolve the pending requests in Ravicor and try again. |
Test and disconnect
- Test connection makes a call to Ravicor and answers Integration confirmed. or Could not connect. Check the address and the key.
- Disconnect asks for the confirmation Disconnect from Ravicor? ChatISP access is cancelled on both sides. ChatISP notifies Ravicor, which deletes the key, and clears the connection on this side. ERPs imported from Ravicor remain registered in ChatISP.
- When the screen opens with the card connected, ChatISP checks whether the connection still exists in Ravicor; if it was removed there, it warns you and returns to the initial state.
Manual configuration
Below the Connect button, Enter the API key manually opens the Address (full URL) and API key fields. The card changes to Configured with the text Configured with a manually entered API key.
The network features of the customer record (network view, Reboot, Edit Wi-Fi, AI network actions), the manual link search and the ERP import only work with Ravicor Connected through pairing. With the manual key, the card only lets you test the connection. Always prefer pairing.
ERPs and external systems
The ERPs and external systems card gathers the registry and billing sources for customer service. The ERP is what says who the customer is, what the contract status is and what they owe; ChatISP talks to it directly, with no intermediaries.
The ERP list
Each registered ERP takes one row:
| Element | What it does |
|---|---|
| Checkbox (Use this ERP in support) | Turns use of the ERP on or off. When off, it leaves identification by phone, billing and synchronization, but the registration and credentials are kept. The choice takes effect immediately. |
| Type | IXC, SGP, HUBSOFT, GESPROV, RECEITANET or PIPESOFT. |
| Name and details | The name given to the connection, the API address, the origin (connected directly or imported from Ravicor) and how many subscribers are already in the mirror (for example, 1520 subscribers in the mirror). The count is the live sign that identification is working. |
| Label | billing when the ERP has billing in ChatISP and is turned on, registry only in all other cases. |
| Service orders in the ERP switch | Turns on the opening and tracking of ChatISP service orders inside this ERP (When on, each service order type chooses whether it also opens here.). It comes off. With it on, the row shows Service orders on; on Gesprov, Opening only: tracking stays in the ERP. also appears; on ReceitaNet, This ERP has no service order integration. After turning it on, the behavior is chosen per type under Service orders, Configure button, Service order types tab. See In the provider's ERP. |
| Test | Makes a real call to the ERP with the saved credential and answers Integration confirmed. or the reason for the failure. |
| Edit | Opens the registration with the current data; secret fields come empty. |
| Delete | Asks for the confirmation Delete {nome}? Its local subscriber mirror is removed too; conversations and history remain. |
With no ERP, the card shows No ERP connected yet. Add a source or import from Ravicor. Below the ERP list is the table of generic external systems (see External systems).
Which company the ERP serves
With more than one active knowledge base (several companies on the same ChatISP), each row gets the Serves choice: All bases or the name of a base. Tapping saves immediately (Done, the choice applies to the next conversations.). On the numbers of a base, the assistant and the customer card only query its ERPs and the ones that serve all. With a single base, nothing appears and the ERP serves everything. See Several bases: one per company.
Card buttons
- Add source opens the Add external source window, with one card for each certified ERP (IXC Provedor, SGP (TSMX), Hubsoft, Gesprov, ReceitaNet, Pipesoft: Guided setup, in the certified pattern) and the Other system card (Generic API integration).
- Import from Ravicor appears when Ravicor is connected through pairing. See Import ERPs from Ravicor.
Register an ERP
- In ERPs and external systems, click Add source and choose the ERP.
- In the Connect ERP window, fill in Name for this connection (how the ERP will appear on the screen and on the customer card) and API address (URL).
- Fill in the credentials of the chosen ERP (table below).
- Click Test and connect. ChatISP makes a real call to the ERP before saving: it only saves if the credential works.
- Once saved, the ERP starts turned on and the first load of the subscriber mirror begins in the background. The screen can be closed: the load continues on its own and the subscriber count grows in the list.
Fields per ERP
| ERP | Example URL | Credentials requested |
|---|---|---|
| IXC Provedor | https://erp.provedor.com.br/webservice/v1 | Access token of the IXC API user. |
| SGP (TSMX) | https://provedor.sgp.tsmx.app | Access token and Application name (App) registered in SGP. Both are required and work together. |
| Hubsoft | https://api.provedor.hubsoft.com.br | Client ID, User (email), Client Secret and User password of the Hubsoft integration API. |
| Gesprov | https://provedor.sistemagesprov.com.br | Gesprov API user and API password. |
| ReceitaNet | https://sistema.receitanet.net/api (pre-filled) | Two credentials, either may be missing: the Access token of the chat billing integration and the Client ID and Client Secret pair of the Subscriber Portal. |
| Pipesoft | https://mk.provedor.com.br | Client ID and Client Secret of the API user, under Provider > User Control > API in Pipesoft. Grant that user the customer (read and write), plan and title controls. |
Messages when testing
| Message | Cause and solution |
|---|---|
| Integration confirmed. | Credential accepted. |
| The ERP refused the credential. Check the access data and try again. | Wrong token, user or password, or a user without permission on the query resources. In SGP, it also happens when TSMX blocks the IP of the ChatISP server: ask for that IP to be allowed. |
| We could not reach the ERP at that address. Check the URL and whether the server is up. | Wrong URL, ERP down or out of reach of the ChatISP server. |
| This Gesprov installation does not have the monitoring API yet. Update the system with the vendor. | Gesprov only: the installed version does not have the route used to read subscribers. |
| The API user has no permission for this control in the ERP. Grant the required controls to the user and try again. | Pipesoft only: the API user exists, but the customer control was not granted to it. |
| Required field | A field is missing or the address does not start with http:// or https://. |
Edit
When editing, the secret fields (token, password, client secret) come empty with the hint Leave blank to keep the current key. If left blank, the saved credential is kept. In Hubsoft, to change the credential, enter Client Secret and User password together. Every edit is validated with a real call before saving, turns the ERP back on and triggers a new mirror load.
Use a dedicated API user for ChatISP in the ERP, with minimum permissions: read access to customers, contracts, logins, plans and accounts receivable. Write access is only used for trust unblocking, in the ERPs that offer it.
Specifics of each ERP
IXC Provedor
- The mirror is built from access logins, contracts, customers, speed groups and sales plans. The plan speed comes from the speed group of the login.
- Periodic synchronization brings only what changed since the previous one. When IXC releases a contract upon payment without marking the change, the Refresh button on the card rereads that customer directly in the ERP.
- Billing: open invoices (up to 100 per customer), last payment, bank slip (boleto), gateway link and Pix copy and paste when the wallet generates Pix, with the QR Code image supplied by IXC itself. ChatISP does not generate or update bank slips in IXC.
- An invoice charged by card or gateway that has not been issued yet arrives without a payment method and appears flagged in the invoices window.
- Trust unblocking by contract, with the days and restrictions configured in IXC. The IXC temporary release is not available through the API.
- Lists titles by due date in its own API, which feeds the automatic billing reminders without an intermediate mirror (Sending automation).
Hubsoft
- OAuth authentication with client ID, client secret, user (email) and password.
- The mirror is built from the services of each customer. Periodic synchronization asks Hubsoft for the services changed since the day of the previous one; the speed comes from the plan text (for example "200 Mbits").
- Billing: up to 50 pending invoices per query, last payment, bank slip digitable line, PDF link and Pix copy and paste when the wallet generates Pix.
- Trust unblocking by service, with the maximum number of days set in the Hubsoft panel.
SGP (TSMX)
- Uses the query routes of the URA category of the SGP API, read only. Token and application must be correct together.
- The API does not offer filtering by date: each synchronization goes through the entire customer listing.
- SGP does not publish the speed as numbers, so the card shows only the plan name.
- Billing: the contract titles, each with the digitable line, bank slip link and Pix copy and paste; the last payment comes from the same query. The card Refresh button rereads the customer directly in SGP.
- Trust unblocking through the SGP URA payment promise (the monthly promise limit is an SGP rule and a refusal comes back explained). Live lookup by CPF/CNPJ.
Gesprov
- Requires the service monitoring API in the Gesprov installation.
- The unit that Gesprov blocks, releases and bills is the service; that is what appears as the contract on the card.
- Each synchronization goes through the entire service listing and completes phone numbers and email from the customer registry.
- Gesprov billing queries are made by the customer CPF/CNPJ, stored encrypted in the mirror and decrypted only at query time.
- Billing: open invoices, Pix from the gateway or from the bank slip (if the invoice has no Pix, ChatISP requests one from the gateway, which works with the Efí gateway), bank slip as PDF. The last payment only appears when Gesprov provides the settlement date.
- Trust unblocking by service; the rules (interval between unblocks, service already active) belong to Gesprov and a refusal comes back explained.
ReceitaNet
- Single-server system: the address comes pre-filled. Two credentials, either may be missing: the chat billing integration token and the Subscriber Portal Client ID and Client Secret.
- With the token, every charge already carries the customer record and the payment data (bank slip, digitable line and Pix copy and paste): the mirror is built from the charges themselves and billing reminders by due date query the API directly.
- With the Subscriber Portal: invoice copy with QR Code, paid invoices with the payment date and the trust unlock (payment notification). Without the Portal, the last payment does not appear and unlocking is not available.
Pipesoft
- Client ID and Client Secret of the API user (Provider > User Control > API). Grant that user the customer, plan and title controls; customer write access is only used by the trust unlock.
- The customer listing carries no phone or address: the full load queries each record individually, in parallel, and the following synchronizations redo the listing and complete the records in batches. On bases of a few thousand customers the first load takes a few minutes.
- Plan speed from the Pipesoft plan catalog (the number is the applied speed, with the provisioning margin). Without the plan control granted, the card shows only the plan name.
- Billing: all the customer titles, with the digitable line and Pix copy and paste; last payment; invoice copy; live lookup by CPF/CNPJ. The card Refresh button rereads the customer directly in Pipesoft.
- Trust unlock through the Pipesoft observation: the customer stops being blocked for late payment until the limit date (5 days by default) and the session is released.
- Billing reminders by due date through the ChatISP title mirror, renewed every 6 hours.
Capability comparison by ERP
| Capability | IXC | Hubsoft | SGP | Gesprov | ReceitaNet | Pipesoft |
|---|---|---|---|---|---|---|
| Local mirror and identification by phone | Yes | Yes | Yes | Yes | Yes | Yes |
| Periodic synchronization | Only what changed | Services changed since the day of the previous one | Full listing | Full listing | Charges by due date (window of months) | Full listing; records detailed in batches |
| Plan speed | Yes | Yes | No | Yes | No | With the plan control granted |
| Customer reread with the Refresh button | Yes | No | Yes | No | No | Yes |
| Billing (label in the list) | billing | billing | billing | billing | billing | billing |
| Invoice copy in the chat | Yes | Yes | Yes | Yes | Yes | Yes |
| Pix copy and paste | Yes, when the wallet generates it | Yes, when the wallet generates it | Yes | Yes (gateway, bank slip or generated in Efí) | Yes | Yes |
| Last payment | Yes | Yes | Yes | When the ERP provides the date | Only with the Subscriber Portal | Yes |
| Trust unblocking | Card and AI | Card and AI | Card and AI | Card and AI | Only with the Subscriber Portal | Card and AI |
| AI finds the customer by CPF/CNPJ | Yes | Yes | Yes | Yes | Yes | Yes |
| AI finds the customer by full name | Yes | Yes | Yes | Yes | Yes | Yes |
| Billing reminders by due date | Yes | Yes | Yes | Yes | Yes | Yes |
| Service orders in the ERP | Opens and tracks | Opens and tracks | Opens and tracks | Opens only | No (depends on a paid IVR, ChatBot or CallCenter module) | Opens and tracks, according to the vendor's documentation |
Lookup by full name uses the local mirror, so it works for all of them; lookup by document queries the ERP live. How each feature appears to the agent is in Customer record: what depends on each ERP.
Local mirror and synchronization
To identify the customer by phone in milliseconds, without depending on the ERP answering at that moment, ChatISP keeps a lean copy of the subscribers of each active ERP: the local mirror.
What the mirror stores
One row per access (login or service) with the customer and contract codes in the ERP, connection login, name, plan, speed, normalized status, city, neighborhood, address, phone numbers and email. CPF/CNPJ, connection passwords and credentials that the ERP returns along with the data are discarded. The exception is Gesprov, whose document is stored encrypted because its API only handles billing by CPF/CNPJ.
When it synchronizes
| Moment | What happens |
|---|---|
| When saving or importing an ERP | Full load in the background. On large databases it takes a few minutes; nothing on the screen waits for it. |
| Every 15 minutes | Synchronization round of all ERPs that are turned on, one at a time. An ERP that has not had a full load yet does the full load in that round. If the previous round of an ERP is still running, it is skipped. |
| After a trust unblocking | Immediate synchronization of the ERP involved, so the card shows the new status. |
| Refresh button on the customer card (IXC) | Reread of that customer directly in the ERP. |
In full loads, accesses that disappeared from the ERP change to Canceled in the mirror, instead of still showing as active.
Phone numbers
All phone fields of the registry go into the mirror, in the ERP order and without repeating the same number written in two ways. In the search, numbers are normalized with country code 55 and the ninth mobile digit. A number without an area code takes the area code of the neighboring number in the same field.
Import ERPs from Ravicor
With Ravicor connected through pairing, the Import from Ravicor button copies the ERPs registered in Ravicor into ChatISP, with address and credential. The notice {n} ERP(s) synced from Ravicor confirms it.
- Imported ERPs become ChatISP registrations of their own, marked as imported from Ravicor, with their own mirror.
- Importing again updates the address and credential of those already imported and creates the new ones. It never deletes anything: an ERP removed from Ravicor stays in ChatISP until it is deleted here.
- The Use this ERP in support checkbox is never changed by the import: the choice made in ChatISP prevails.
- If the ERP refuses the credential of an imported ERP (because it was changed in Ravicor), ChatISP reimports on its own and tries again.
External systems (generic API integration)
Any ISP system with an HTTP API (an in-house billing system, a CRM, a work order system) can be integrated without programming in ChatISP: you describe the operations in JSON and the AI, the flows and the customer card start using them. The JSON is the only list of allowed operations: only what is in it can be executed, always against the registered base address.
Register
- In ERPs and external systems, click Add source and choose Other system.
- Fill in the New system window (fields below).
- Click Save. The JSON is validated immediately; a structure error appears as The operations JSON is not valid, followed by the problematic point.
- Use Test in the table to run a real operation and see the response.
| Field | What it does |
|---|---|
| Name | How the system appears on the card, in flows and to the AI. It cannot repeat the name of another system. |
| API base address | URL starting with http:// or https://. The operation paths are appended to it. |
| Authentication | None, Bearer (token), Basic (user:password) or Custom header. For a custom header, also enter the Header name (for example X-Api-Key). |
| Credential | The token, the user:password pair or the header value. It is stored encrypted; when editing, leaving it blank keeps the current one. |
| Extra headers (JSON) | Optional. For example {"X-Ambiente": "producao"}. |
| Operations (structured JSON) | What the system can do: path, method, parameters and what it returns. |
| Timeout (s) | Maximum wait for a response, from 3 to 60 seconds. Default: 15. |
| Available to the AI | When on, the AI can query this system during customer service. On by default. |
| Active | When editing. When off, the system stops being used everywhere. |
Operations format
{
"operacoes": [
{
"id": "faturas_abertas",
"descricao": "Lists the customer open invoices by CPF",
"metodo": "GET",
"caminho": "/api/v1/faturas?cpf={cpf}&situacao=aberta",
"parametros": [{ "nome": "cpf", "descricao": "Customer CPF, digits only" }],
"resposta": "list of invoices with due date, amount and bank slip link"
},
{
"id": "liberar_confianca",
"descricao": "Trust unblocking by customer code",
"metodo": "POST",
"caminho": "/api/v1/desbloqueio",
"corpo": { "cliente": "{codigo}", "dias": 3 },
"parametros": [{ "nome": "codigo", "descricao": "Customer code" }]
}
]
}| Key | Rule |
|---|---|
id | Required and unique in the system. Unaccented letters, digits and underscore, up to 60 characters. |
metodo | GET, POST, PUT or DELETE. Default: GET. |
caminho | Required, starts with / and is always relative to the base address (a full address is rejected). |
parametros | List of nome (unaccented letters, digits and underscore, up to 40) and descricao. Each parameter goes into the path and the body wherever {nome} appears. In the path the value is URL encoded. Only declared parameters are accepted, each with up to 500 characters. |
corpo | Optional, for methods other than GET: JSON object sent as application/json, with the {nome} placeholders replaced. |
descricao and resposta | Free text that tells the AI when to use the operation and what it returns. It is worth writing them well. |
ChatISP does not follow redirects and uses up to 64 KB of each response. Responses from 200 to 299 count as success.
The systems table
Columns Name (with the base address), Operations (how many), Available to the AI, Last test (date in green or red), Status and the actions Edit, Test and Delete (with the warning Delete this system? The AI and flows will stop using it.).
The test window lists the operations, opens a field for each parameter of the chosen operation and shows the response with the HTTP code. With no operations registered, Add operations to the JSON to test. appears.
Where operations are used
- AI: with Available to the AI on, the AI receives the list of operations with their descriptions and decides when to call each one. See Artificial intelligence.
- Flows: the Query system step chooses the system, the operation and the parameters, and answers the customer with
{resposta.campo}in the message. With no system registered, the step shows Register an external system in Integrations to use this step. See Flows. - Customer card: through the conventions in the next section.
External system conventions
Some customer record features are turned on automatically when the operations JSON declares parameters with agreed names. Just follow the names:
| Feature | Operation that turns it on | Expected response |
|---|---|---|
| System section on the customer card | The first operation with the telefone parameter. ChatISP sends the conversation number. | Any JSON; the card renders the fields as label and value. |
| Invoices window: list | Operation with the cliente_id and situacao parameters. ChatISP sends situacao=abertos. | List of bills (directly or in titulos), each with id, descricao, valor, vencimento, dias_atraso and, optionally, boleto_link. Up to 20 bills. |
| Invoices window: invoice copy | Operation with the titulo_id parameter. | The bill with the pagamento block: link_boleto, linha_digitavel and pix_copia_cola. |
| Manual link: search | Operations with the documento, telefone or nome parameter. The typed term chooses the order: 11 or 14 digits try document and then phone, other numbers go to phone, text goes to name. | clientes list with id, nome, situacao and, optionally, documento_formatado, email, telefone1 and telefone2. |
| Manual link: linked customer card | Operation with the vinculado_id parameter. | The same format returned by the phone query. |
Responses wrapped in {"ok": true, "dados": {...}} are unwrapped automatically. When more than one operation fits, the one with fewer parameters is used. Manual linking to an external system only appears when the system declares both the search and the linked customer card.
ChatISP API (keys) Plan feature
The ChatISP API card ("Keys for other systems to use the API: messages, conversations, contacts, service orders, calendar and metrics, each key with its own permissions.") creates the keys that the ISP's ERP, CRM, subscriber portal, monitoring or BI use to work with customer service through the public API. The public API and webhooks are part of the plans from PREMIUM up; the number of active keys depends on the plan (3 on PREMIUM, 10 on GOLD, unlimited on ENTERPRISE). Outside the plan, the card shows the feature locked with the plan from which it is included. The meter next to the title shows how many keys are in use.
The top of the card shows the API address of your installation, with the hint the key goes in the Authorization: Bearer header, and the API documentation button, which opens the complete reference.
Create a key
- Click New key.
- Give it a Name that identifies the system that will use it. This name appears in the history of everything the key does.
- Turn on only the permissions the integration needs (see the table below). On a new key, Send messages, Look up conversations and Open service requests come turned on.
- With more than one WhatsApp number connected, choose the Sending number: the number this key sends from when the call does not name a connection. Without it, the API refuses any send that does not provide
conexao_id. The option None (the call must name the connection) leaves the choice to each call. With a single number, the field is not shown. - Adjust the Per-minute limit: calls accepted per minute, default 60, maximum 10,000. 0 turns the limit off.
- Click Save. The Key created window shows the full key with the Copy button.
Key permissions
The permissions are in three groups. Each one unlocks a set of API operations:
| Group | Permission | What it unlocks |
|---|---|---|
| Customer service | Send messages | Text, approved official API templates and files. |
| Look up conversations | List and look up conversations, read the message history and download files. | |
| Open service requests | Put a number in a department queue or straight with an agent. | |
| Manage conversations | Transfer, close, tag and add notes to conversations. | |
| Contacts | List, look up and rename contacts. | |
| Service orders and calendar | Look up service orders | List service orders, see the timeline, stages and types. |
| Manage service orders | Open, move between stages, assign and comment on service orders. | |
| Look up calendar | List and look up appointments. | |
| Manage calendar | Schedule, complete and cancel appointments. | |
| Management | Metrics | Volumes, business-hours times, satisfaction and figures per department and agent. |
Connections, departments, agents, templates, tags and closing reasons are available to any active key, with no permission: they are the records every integration needs to build its calls. The technical code of each permission and the exact operations it unlocks are in Key permissions (scopes).
The keys table
- Columns Name, API key (only the beginning, for recognition), Permissions (one tag per permission turned on), Uses (hover to see Last use) and Status (Enabled or Disabled).
- Edit changes name, permissions and limit, and lets you disable the key without deleting it. The key itself does not change: the integration keeps the same value, now with the new permissions.
- Reveal shows the full key again, to those with the Integrations permission.
- Delete removes the key; the system that used it can no longer call the API.
Create one key per integration, with only the permissions it uses. A BI dashboard needs only Look up conversations and Metrics; the ERP that sends bank slips, only Send messages. That way you can restrict or revoke one system without affecting the others.
The 37 operations, the call format, the error codes and the Postman and Insomnia collection are in the API documentation: Introduction to the ChatISP API.
Outgoing webhooks Plan feature
A webhook notifies one of your systems, over HTTP, when something happens in customer service. It is part of the same plan feature as the public API.
Create a webhook
- Click New webhook.
- Enter Name and Address (the URL that will receive the notifications).
- Check the events (at least one). On a new webhook, Message received, Conversation created and Conversation closed come checked.
- Click Save. The Webhook created window shows the Secret, used to verify the signature of each delivery.
Available events
| Event | When the notification is sent |
|---|---|
| Message received | For every message from the customer. |
| Message sent | For every message sent by the ISP: agent (in the panel or on the paired phone), AI, flow, automatic messages, campaigns, collection schedule and API. |
| Delivery and read | When a sent message is delivered, read or fails. |
| Conversation created | When a new conversation is born, with a new protocol number. |
| Conversation assigned | When an agent takes the conversation or automatic distribution hands it to them. |
| Conversation transferred | When the conversation is transferred to a department or agent (panel, AI, flow or API). |
| Conversation closed | When the conversation is closed, with the reason. |
| Service order opened | When a service order is opened, by any path. |
| Service order updated | When a service order changes stage, is reopened, changes owner or receives a comment. |
Message sent and Delivery and read generate a notification for every message sent, including in campaigns. Turn them on only if the receiving system really uses this information, preferably in a separate webhook.
How deliveries work
- Each event becomes a POST with a JSON body and the headers
X-ChatISP-Evento,X-ChatISP-EntregaandX-ChatISP-Assinatura, which carries the HMAC SHA-256 of the body computed with the secret. - Sending never delays customer service: the event enters a queue and is delivered in the background, usually a few seconds later.
- Responses from 200 to 299 count as delivered. The maximum wait for a response is 10 seconds.
- On failure, ChatISP tries again after 1 minute, 5 minutes, 15 minutes, 1 hour and 6 hours. After the last attempt, the delivery is discarded.
The webhooks table
Columns Name (with the URL), Events, Last delivery (hover to see the result; a highlighted number indicates deliveries in the queue) and Status. Actions: Edit (including disabling; pending deliveries are kept until you reactivate it), Test (delivers a test event immediately and reports Test delivery accepted or Test delivery failed, with the code or the error), Secret (reveals the secret) and Delete (pending deliveries are discarded).
The exact content of each event, signature verification in PHP, Node.js and Python, and the retry and duplicate rules are in Outgoing webhooks in the API documentation.
Google Calendar
Mirroring appointments to Google Calendar is individual: each user connects their own Google account in My account, on the Google Calendar card, with the Connect my Google account button. Authorization opens in a tab of the Ravi Systems connection hub; when it finishes, Google account connected. Your upcoming appointments will be mirrored. appears.
- It works in one direction only: appointments where the user is the person responsible appear in their Google calendar. What is created in Google does not come back to ChatISP.
- With the account connected, appointment types configured for it can create the Google Meet room automatically.
- Disconnecting keeps the events already created in Google; upcoming ones are no longer mirrored.
Details in Calendar.
System email
ChatISP sends few emails: invitations for new users and password recovery codes. These emails go out through a sending channel maintained by Ravi Systems, with no need to configure an SMTP server. There is no per-installation SMTP. Messages to the end customer always go out through WhatsApp.
Credential security
- Tokens, passwords and keys of ERPs, Ravicor and external systems are stored encrypted in the ChatISP database.
- ERP and external system credentials are write only: once saved, they never return to the screen. To change one, type the new value; leaving it blank keeps the current one.
- The Ravicor key obtained through pairing is not shown on any screen.
- ChatISP API keys and webhook secrets can be revealed again by those with the Integrations permission.
- Sensitive personal data that ERPs return (CPF/CNPJ, connection passwords) is discarded in the local mirror, except for the encrypted Gesprov and ReceitaNet document.
- External systems only run operations declared in the JSON and only against the registered base address.
Common problems
| Symptom | Likely cause and what to do |
|---|---|
| ERP saved, but the subscriber count in the mirror does not appear | The first load is still running. On large databases it takes minutes; reload the screen after a while. |
| The count stopped growing and customers are not identified | Use Test on the ERP. A credential changed in the ERP requires editing the registration here (or importing again, if it came from Ravicor). |
| ERP shows as registry only | The ERP is turned off in the checkbox (all six certified ERPs have billing in ChatISP). |
| Pipesoft answers Permission to the control denied | Grant the API user the customer, plan and title controls under Provider > User Control > API. The trust unlock requires customer write access. |
| Import from Ravicor button does not appear | Ravicor is not Connected through pairing (the manual key does not allow importing). |
| Customer card without network data, with Ravicor configured | Connection made with the manual key. Disconnect and connect through pairing. |
| Gesprov refuses with the monitoring API message | The Gesprov installation does not have the route used by ChatISP. Update Gesprov with the vendor. |
| SGP refuses the credential with correct token and app | IP block at TSMX: allow the public IP of the ChatISP server. |
| Test on an external system returns HTTP 401 or 403 | Wrong authentication: check the type, the header name and the credential. |
| Webhook with deliveries piling up in the queue | The address does not respond with 2xx within 10 seconds. Use Test to see the error. |
| API or webhooks card locked | The current plan does not include the public API. See Account and plan. |