A rede possui diferentes opções de integração IP-PBX Asterisk e Bitrix24 CRM, mas mesmo assim decidimos escrever a nossa própria.
Funcionalmente, tudo é padrão:
Ao clicar no link com o número de telefone do cliente no Bitrix24, o Asterisk conecta o número interno do usuário em nome de quem este clique foi feito com o número de telefone do cliente. No Bitrix24, um registro da chamada é gravado e, ao final da chamada, o registro da conversa é puxado.
O Asterisk recebe uma ligação externa - na interface do Bitrix24 mostramos o cartão do cliente ao funcionário para cujo número chegou a ligação.
Caso não exista esse cliente, abra o cartão para criação de um novo lead.
Assim que a ligação for finalizada, refletimos no cartão e abrimos a gravação da conversa.
Abaixo, vou lhe dizer como configurar tudo sozinho e fornecer um link para o github - sim, sim, pegue e use!
Descrição geral
Chamamos nossa integração de CallMe. CallMe é um pequeno aplicativo web escrito em PHP.
Deixarei análise de configuração, questões de segurança, obtenção de certificado e até escolha de servidor web fora do escopo do artigo - muito já foi escrito sobre isso. O aplicativo não tem restrições, funciona tanto em http quanto em https.
Temos https, vamos criptografar o certificado.
Se você fez tudo corretamente, clicando no link você verá algo assim
Configurando Bitrix24
Vamos criar dois webhooks.
Webhook de entrada.
Na conta de administrador (com id 1), siga o caminho: Aplicativos -> Webhooks -> Adicionar webhook -> webhook de entrada
Preencha os parâmetros do webhook de entrada como nas capturas de tela:
E clique em salvar.
Depois de salvar, o Bitrix24 fornecerá a URL do webhook recebido, por exemplo:
Salve sua versão da URL sem o /profile/ final - ela será usada no aplicativo para trabalhar com chamadas recebidas.
eu tenho isto https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/
Webhook de saída.
Aplicativos -> Webhooks -> Adicionar Webhook -> Webhook de saída
Os detalhes estão nas capturas de tela:
Salve e obtenha o código de autorização
eu tenho isto xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Você também precisa copiá-lo para você mesmo, pois é necessário para fazer chamadas.
Importante!
Um certificado SSL deve ser configurado no servidor Bitrix24 (você pode usar letsencrypt), caso contrário a API Bitrix não funcionará. Se você possui uma versão em nuvem, não se preocupe – o SSL já está lá.
Importante!
No campo “Endereço do processador” deve ser indicado um endereço acessível pela Internet!
E com o toque final, vamos instalar nosso CallMeOut como um aplicativo para fazer chamadas (para que ao clicar no número do PABX voe um comando para originar a chamada).
No menu, selecione: Mais -> Telefonia -> Mais -> Configurações, coloque o "Número para chamadas efetuadas por padrão" Aplicativo: CallMeOut e clique em "Salvar"
configuração de asterisco
Para uma interação bem-sucedida entre Asterisk e Bitrix24, precisamos adicionar o usuário callme AMI ao manager.conf:
desabilitar a entrada na tabela CDR para este ramal (não é necessário lá), definir o horário de término da chamada, calcular a duração, se o resultado da chamada não for conhecido - definir (variável CallMeDISPOSIÇÃO) e, por último passo, enviar tudo para o Bitrix através do curl do sistema.
E um pouco mais de magia - uma chamada recebida:
888999 => {
&recording(${CALLERID(number)},${EXTEN});
Answer();
ExecIF(${CallMeCallerIDName}?Set(CALLERID(name)=${CallMeCallerIDName}):NoOp()); // выставляем CallerID если узнали его у Битрикс24
Set(CallStart=${STRFTIME(epoch,,%s)}); // начинаем отсчет времени звонка
Queue(Q1,tT);
Set(CallMeDISPOSITION=${CDR(disposition)});
Hangup();
}
Ela diz instalação de PBX ID do chamador (nome) variável CallMeCallerIDNome.
A própria variável CallMeCallerIDName, por sua vez, é definida pelo aplicativo CallMe (se Bitrix24 tiver um nome completo para o número do chamador, iremos defini-lo como ID do chamador (nome), não - não faremos nada).
Configuração do aplicativo
Arquivo de configurações do aplicativo - /var/www/pbx.vistep.ru/config.php
Descrição dos parâmetros da aplicação:
Ligue para mimDEBUG — se for 1, então todos os eventos processados pela aplicação serão gravados no arquivo de log, 0 — não escrevemos nada
tecnologia SIP/PJSIP/IAX/etc
authToken — Token de autorização Bitrix24, código de autorização de webhook de saída
bitrixApiUrl — URL do webhook recebido, sem perfil/
extensões — lista de números externos
contexto — contexto para originação de chamadas
listener_timeout - velocidade de processamento de eventos do asterisco
asterisco — um array com configurações para conectar ao asterisco:
hospedeiro - ip ou nome do host do servidor asterisk
esquema — diagrama de conexão (tcp://, tls://)
porta - porto
nome de usuário - Nome de usuário
segredo - senha
connect_timeout - tempo limite de conexão
tempo de ler esgotado - tempo de ler esgotado
arquivo de configurações de exemplo:
<?php
return array(
'CallMeDEBUG' => 1, // дебаг сообщения в логе: 1 - пишем, 0 - не пишем
'tech' => 'SIP',
'authToken' => 'xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6', //токен авторизации битрикса
'bitrixApiUrl' => 'https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/', //url к api битрикса (входящий вебхук)
'extentions' => array('888999'), // список внешних номеров, через запятую
'context' => 'dial_out', //исходящий контекст для оригинации звонка
'asterisk' => array( // настройки для подключения к астериску
'host' => '10.100.111.249',
'scheme' => 'tcp://',
'port' => 5038,
'username' => 'callme',
'secret' => 'JD3clEB8_f23r-3ry84gJ',
'connect_timeout' => 10000,
'read_timeout' => 10000
),
'listener_timeout' => 300, //скорость обработки событий от asterisk
);
Configuração do supervisor
O Supervisor é usado para iniciar o processo manipulador de eventos Asterisk CallMeIn.php, que monitora as chamadas recebidas e interage com o Bitrix24 (mostrar o cartão, ocultar o cartão, etc.).
Dúvidas, sugestões - por favor nos comentários. Além disso, se você estiver interessado em saber como foi o desenvolvimento dessa integração, escreva, e no próximo artigo tentarei revelar tudo com mais detalhes.