📜 ⬆️ ⬇️

CRM and telephony integration, complex product development lessons


The story of how the development of the integration of Sipuni telephony and several CRMs became a laboratory for us and influenced not only the technologies we use, but also the processes within the company.


Why do we need to integrate telephony and CRM?


Integration of telephony and CRM simplifies the work, for example, of sales departments. For incoming or outgoing calls, contacts and deals are automatically created. A contact number is immediately filled in the contacts, and a new deal appears at the first step of the funnel.



Automatic transactions. Contain the store name and customer number. The tags are the source of the client from call tracking.


The manager will receive a notification, in which you can see who is calling, which line and links to the contact and transaction in CRM.



Incoming Call Notification


For missed calls, a task is automatically created that you need to call back to such a client.


With connected call tracking, you can see what kind of advertising the customer is calling. And UTM tags fall into contact fields.


If the contact already exists in CRM, then when an incoming call the PBX sends a call to the manager responsible for the contact.


Challenges of integration development for a large number of CRM


We already had integration with amoCRM. But it was closely connected with the PBX code and this made it difficult to connect new integrations. Therefore, we decided to create a separate integration service.


At first, I wanted to create a universal API for several CRMs. But we abandoned this idea. Because each CRM has its own concepts, for example, amoCRM has contacts and deals, RetailCRM has customers. Creating a universal API would lead to the substitution of concepts and the restriction of functionality for different CRM.


Found such a solution: for each CRM its own module, which receives events from the PBX and comes with them according to its logic, creates contacts, leads or customers. This allowed us to work consistently with these modules and without compromising the functionality of a specific CRM.


The user interface settings are also individual for each CRM. Its task is to transfer the settings tree to the necessary CRM module.


The complexity of creating integration for a large number of CRM is not in the algorithms, but in the project organization. It is necessary to develop the system in such a way that with an increase in the number of CRMs, the time to connect them does not increase.


As a result, we have developed a framework in which it is easy to connect new CRM. It didn't work out right away; I had to completely redo the framework three times before it became comfortable.


Technologies that influence product quality


Prior to this project, we did not use the method of continuous integration. With this technique, for each change of code, tests are run automatically on the server, checking the product. It significantly improved the quality of the product, although at first it seemed just interesting.


For continuous integration use Buildkite.com. Jenkins is not mastered, no one had enough time thoughtfully to deal with it. Buildkite was simple and everything was ready in one day.



Interface Buildkite.com


Continuous integration has changed our attitude towards unit tests. They showed how many errors are revealed. Now we write them not because it is so accepted or necessary, but because they give confidence that the code is working.


First problems and new process of work with technical support


When customers started using the new integration, the first errors appeared. Went a flurry of comments and suggestions. Colleagues from technical support simply passed on the errors of customers to developers. Development stopped, because programmers only analyzed the logs and dealt with errors. Many mistakes were similar, but time was spent on them anyway.


It became clear that we need to change the way we work with colleagues from technical support.


Asana began to be used to record errors instead of Jira. I needed a simple tool where technical support guys can quickly create tasks and receive alerts on readiness.



Sample error list in Asana


Then, we gave colleagues access to the logs. On this project we started using GrayLog, it shows logs in the web interface and quickly finds the necessary records.


Messages in the logs made in Russian. I have long doubted whether to do this, because we usually write them in English. Logs have become clearer and easier to read.


Now colleagues from technical support before passing the error to programmers themselves first look at the logs and solve most of the problems without the participation of developers.


Product testing, technology bail out again


With each release of the new version of the product, you need to check all the functionality for all CRM. For this we use test cases, where it is written what to click, where to call and what should happen. As new CRM test cases were added, there was a lot of it, and there was a desire to automate work with them.


I learned that it is called Test Case Management Tools. Of the several candidates stopped at testlodge.com. Now checking the product has become more convenient and useful was the ability to assign testing of different CRM for different people.



Test card, it shows what to do and the expected result. It remains to check and click on one of the buttons below.



Test execution summary


Programming debts


As in any project, sometimes you need to do something quickly. There are places in the project that developers are unhappy with: non-optimal or uncomfortable code. This worsens not only the support of the project, but also the motivation of the team.


To solve this problem, we agreed with the director that we can devote one day a week to refactoring. Programmers began to treat the code as the owners, not as contractors. If something is done poorly, we simply rework and do not worry that there are other tasks. This day to restore order.


Conclusion


Only one project brought several new tools to the company and changed the way employees work. Due to these changes, the speed of development and the quality of the product have increased, which means the company itself has changed a little.


It turns out that a large project is valuable not only for its results, but also for positive changes in the company.


')

Source: https://habr.com/ru/post/328798/


All Articles