What can be obtained from the integration of 1C: CRM 8 and Asterisk telephony
For over a year we have been closely involved in developing solutions for integrating telephony based on Asterisk and 1C programs. First of all, we are experiencing solutions for ourselves, and I want to share experiences on what can be gained from such integration. We use the terminal scheme of work with 1C: CRM. On the table, each employee has an IP phone that is connected via a local network to an IP ATS Askozia , deployed together with a terminal 1C server within the VMware infrastructure in the nearest data center.
Click to call
The first thing they did was organize the dialing of numbers from 1C by sending a direct command to Asterisk, indicating the employee’s internal number and the external customer number. It looks very simple, the employee presses on the phone number in the 1C: CRM database in the terminal session, the phone on the table rings, we pick up the phone, the call goes to the customer. Conveniently, simply, implemented in 15 minutes, saved a lot of time to managers. Technically, it was an FTP connection and the creation of a call file with information about who should call whom. Later remade using components for 1C. ')
Displays the name of the client when an incoming call
It is very convenient for an incoming call to see the name of the client’s company on the IP phone, and not the bare number. To do this, we used the AGI script, which, when an incoming call arrives, accesses the 1C: Enterprise 8 server and from the 1C: CRM database takes the client's name, transliterates it and inserts it in the Caller ID field. Implementation details in my last post . This is a very convenient feature, the history of calls to Asterisk literally spoke, instead of the bare numbers - the names of customers.
Client card for incoming call
In order to receive a client card for an incoming call, you need to make sure that during the call the Asterisk server pulled 1C: Enterprise in some way, and also the client session of the user whose phone is currently ringing. One of the most difficult tasks for us was to develop a client component for the connection between 1C and Asterisk, which I wrote about in this post . To implement this function, we used the Asterisk AJAM interface - this is a command interface that allows you to implement control of the telephone exchange and receive feedback from it. On the basis of this component, a 1C telephony panel was implemented, which runs along with the 1C: CRM session for each user and interacts with Asterisk during a call. As a result, during an incoming call, we display information about the client, open the document an event that managers fill out during the conversation. And in the hidden field of the document Event we write down the unique identifier of the call, but more on that later :)
Call history in 1C
Creating events for incoming calls is a good practice when using CRM systems, but it is not always possible to do it quickly, and not all managers “love” to call CRM calls, unless they are paid for the number of events :). We organized a small PHP script on the Asterisk side, which sends CDR recordings in portions, and the 1C: Enterprise 8 server takes the records in a routine task and writes them to the information register, so an identical copy of the Asterisk CDR database is created in 1C.
Each table entry contains a unique call identifier, and we now know for sure whether the manager created an event for a specific call or not, but that’s not all ...
Total recording of conversations and listening to them
Asterisk has a great call recording feature, but without integration with the CRM system, it’s a simple set of sound files, thousands of files, millions of useless unstructured files.
Yes, they can be expanded into daddies, but you can find all the calls from one client, especially if they called from different numbers, only using integration with the CRM system. A slight modification of the dialplan asterisk, and in one of the CDR fields we store the name of the conversation recording file. As a result, inside 1C: Enterprise, we get a call history table with links to call recording and unique call identifiers, the same as those stored in the Event document that opened at the beginning of calls.
This is a good tool for the manager and his manager. The manager can gradually enter information into the CRM system about the clients' requests, listening to the recordings of their conversations directly from the event document. The manager can check whether all calls are processed by managers and whether a document is created for each call. Naturally, he can also listen to any conversation of a subordinate. On the other hand, in the card of each client, you can make a bookmark in which conversations with employees of this client will accumulate with the ability to quickly find and listen to the desired conversation. This is convenient and allows you to instantly find solutions to conflict situations. Frankly, we have never used the recording of a conversation to resolve the conflict, but after mentioning the fact of having a record in a conversation with the conflicting party, further analysis of the situation goes much softer no matter if the client was right :)
Caller City Display
In memory, we remember several city codes, but when calls began to come from different parts of the country, the idea appeared to display the name of the city upon an incoming call, so that managers would adequately respond to questions about whether we can come and demonstrate our product in Khabarovsk :) The implementation is not complicated. From the site of Rossvyaz they took the correspondence of numbers and cities, drove them into the register of information, with the incoming call we define the city and display it in the telephony panel.
Displays the caller's company on the map
We know the city, we connect the Yandex map and, through the API in 1C, with an incoming call, we graphically display the location of the client. If it is already in the database, then we display it right down to the street and at home. Convenient, but there are some nuances, the idea needs some work.
Displaying an arbitrary 1C report at the time of the call
Even before picking up the handset, you can display a report on the counterparty, for example, a report on the history of mutual settlements, or to show open customer orders, purchase history. For example, it’s convenient for our accountant to see a list of unreturned documents, and for a sales manager a list of unpaid invoices.
Sending a fax message in one click
I hate faxes, but it happens that a client asks to send him a fax with a stamp. How to do it from an integrated system? Not easy, but quite possible. Asterisk can send faxes to the current conversation using the TIFF graphic format. 1C is able to form the printed form of a printed document and save it in PDF format. Well, during the conversation, open the document account, press the send fax button, 1C saves the form in PDF format and sends it to the Asterisk server, in parallel transferring the call to the fax sending service channel, telling Asterisk information about the current conversation and the name of the sent PDF file. Asterisk runs the PDF to TIFF conversion script, then sends the TIFF file to the current conversation, and when the transfer is completed, sends a delivery result message to 1C.
Statistical processing of CDR by means of the 1C data composition system
Having accumulated a fairly large database of calls for the year of operation, we tried to use the powerful analytical module of the 1C system for plotting graphs based on the CDR table loaded in 1C: Enterprise 8. Here is an example of a couple of reports that we got:
Call statistics by day of the week:
Distribution of calls by the hour:
Analysis of the use of outgoing channels:
Smart call routing
In the CRM system 1C there is a specialized field that allows you to assign a client to a specific manager. This mechanism can be used for smart routing. How it works? At the start of the 1C: CRM system creates a list of its clients, or rather the numbers of "their" clients, and keeps them in memory. Each user of the system has its own list. When an incoming call, when a customer dials a multi-channel number and prepares to hear the voice menu (IVR) greeting, the telephony panel of each employee checks his list with the number of the caller, and if the number matches, intercepts the call to himself. It turns out that the call transfer works only if the telephony panel and the 1C session is active. If 1C is closed, then the user is not in place, because it works out the standard route with the secretary and departments. It looks to the client in an interesting way, he calls the common multichannel number and immediately connects with the necessary employee, IVR does not even have time to utter the first greeting sounds.
Function to eavesdrop on a conversation and whisper to a colleague
This idea we saw at Switchvox.
Asterisk has a great “supervisor” feature.
How it works? The customer calls and gets on the beginner, who talks about our products, answers the client's questions. As a department head, the topic of conversation becomes interesting, and in one click I connect to the conversation in listener mode, the client asks a question about the price or discount that we are ready to offer, one click and I turn on the whisper mode, I tell my colleague: “10% if will buy for 100,000 rubles. " After that, the newcomer, without interrupting the conversation, continues to discuss the deal with the client, taking into account my comment, which he heard only. If necessary, I can intervene in the conversation and organize a tripartite conference with a few clicks in the list of employees.
Status management, call transfer from 1C
On expensive IP phones, there is a BLF function that allows you to display the IP phone status of another employee. The color of the light bulb is immediately clear talking, busy or free colleague.
Since our 1C: CRM system is connected to Asterisk, we receive information about the status directly in 1C and can display it on the screen, as well as change the logic of the panel depending on the state.
For example, if you click on an employee who is currently free, a simple call to that employee will occur. If the employee is currently talking to someone, the panel will offer to join the conversation or eavesdrop. Call transfer can also be intellectual and can take state into account. For example, I received a call from a client and want to transfer it to a colleague, again I click on an employee in the list, an advisory translation is made to him, if I get a second call during a conversation with a client, I again click on a colleague and the call is transferred without a consultation . This is convenient and easy to understand. No grids and stars. There are plans to organize status management according to the work schedule, and depending on this, change the route of the call to a substitute colleague automatically.
Conclusion
It is a lot of ideas, if I missed something, offer, it will be interesting to discuss and implement. For more information about our project, the integration of 1C and Asterisk can be read on the project website .