Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Asterisk ΠΈ Bitrix24

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Asterisk ΠΈ Bitrix24
ΠŸΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° IP-PBX Asterisk ΠΈ CRM Bitrix24 Π½Π° ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, Π½ΠΎ сСпак Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π° напишСмС своја.

Π’ΠΎ однос Π½Π° функционалноста, сè Π΅ стандардно:

  • Π‘ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° врска со тСлСфонски Π±Ρ€ΠΎΡ˜ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚ Π²ΠΎ Bitrix24, Asterisk Π³ΠΎ ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π° Π²Π½Π°Ρ‚Ρ€Π΅ΡˆΠ½ΠΈΠΎΡ‚ Π±Ρ€ΠΎΡ˜ Π½Π° корисникот Π²ΠΎ Ρ‡ΠΈΠ΅ ΠΈΠΌΠ΅ Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ со тСлСфонскиот Π±Ρ€ΠΎΡ˜ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΡ‚. Π’ΠΎ Bitrix24, сС снима запис ΠΎΠ΄ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚ ΠΈ Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ ΠΎΠ΄ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚, сС ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π° снимка ΠΎΠ΄ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΎΡ‚.
  • Π…Π²Π΅Π·Π΄ΠΈΡ‡ΠΊΠ°Ρ‚Π° Π΄ΠΎΠ±ΠΈΠ²Π° ΠΏΠΎΠ²ΠΈΠΊ ΠΎΠ΄Π½Π°Π΄Π²ΠΎΡ€ - Π²ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜ΡΠΎΡ‚ Bitrix24 ја ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°ΠΌΠ΅ клиСнтската ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠ° Π½Π° Π²Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈΠΎΡ‚ Π½Π° Ρ‡ΠΈΡ˜ Π±Ρ€ΠΎΡ˜ пристигна овој ΠΏΠΎΠ²ΠΈΠΊ.
    Π”ΠΎΠΊΠΎΠ»ΠΊΡƒ Π½Π΅ΠΌΠ° Ρ‚Π°ΠΊΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ‚, ќС ја ΠΎΡ‚Π²ΠΎΡ€ΠΈΠΌΠ΅ ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠ°Ρ‚Π° Π·Π° создавањС Π½Π° Π½ΠΎΠ²ΠΎ водство.
    Π¨Ρ‚ΠΎΠΌ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚ Π΅ Π·Π°Π²Ρ€ΡˆΠ΅Π½, Π³ΠΎ ΠΎΠ΄Ρ€Π°Π·ΡƒΠ²Π°ΠΌΠ΅ ΠΎΠ²Π° Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠ°Ρ‚Π° ΠΈ ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ снимка ΠΎΠ΄ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΎΡ‚.

Под ΡΠ΅Ρ‡Π΅ΡšΠ΅Ρ‚ΠΎ ќС Π²ΠΈ ΠΊΠ°ΠΆΠ°ΠΌ ΠΊΠ°ΠΊΠΎ Π΄Π° поставитС сè Π·Π° сСбС ΠΈ ќС Π²ΠΈ Π΄Π°Π΄Π°ΠΌ Π»ΠΈΠ½ΠΊ Π΄ΠΎ github - Π΄Π°, Π΄Π°, Π·Π΅ΠΌΠ΅Ρ‚Π΅ Π³ΠΎ ΠΈ искористСтС Π³ΠΎ!

ΠžΠΏΡˆΡ‚ опис

Ја Π½Π°Ρ€Π΅ΠΊΠΎΠ²ΠΌΠ΅ Π½Π°ΡˆΠ°Ρ‚Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° CallMe. CallMe Π΅ ΠΌΠ°Π»Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° напишана Π²ΠΎ PHP.

ΠšΠΎΡ€ΠΈΡΡ‚Π΅Π½ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΈ услуги

  • PHP 5.6
  • PHP AMI Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°
  • ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€
  • Nginx + php-fpm
  • супСрвизор
  • AMI (ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π·Π° ΠΌΠ΅Π½Π°ΡŸΠ΅Ρ€ Π½Π° Ρ•Π²Π΅Π·Π΄ΠΈΡ‡ΠΊΠ°)
  • Bitrix Π²Π΅Π±-ΠΊΡƒΠΊΠΈ (поСдноставСна ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π½Π° REST API)

ΠŸΡ€Π΅Π΄-ΠΏΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅

На сСрвСр со Asterisk Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρˆ Π²Π΅Π± сСрвСр (Π·Π° нас Π΅ nginx+php-fpm), супСрвизор ΠΈ git.

Команда Π·Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° (CentOS):

yum install nginx php-fpm supervisor git

ОдимС Π²ΠΎ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡƒΠΌΠΎΡ‚ достапСн Π΄ΠΎ Π²Π΅Π±-сСрвСрот, ја ΠΏΠΎΠ²Π»Π΅ΠΊΡƒΠ²Π°ΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΎΠ΄ Git ΠΈ Π³ΠΈ поставувамС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²Π° Π½Π° ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π°:


cd /var/www
git clone https://github.com/ViStepRU/callme.git
chown nginx. -R callme/

Π‘Π»Π΅Π΄Π½ΠΎ, ајдС Π΄Π° Π³ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ nginx, Π½Π°ΡˆΠ°Ρ‚Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π° сС Π½Π°ΠΎΡ“Π° Π²ΠΎ

/etc/nginx/conf.d/pbx.vistep.ru.conf

server {
	server_name www.pbx.vistep.ru pbx.vistep.ru;
	listen *:80;
	rewrite ^  https://pbx.vistep.ru$request_uri? permanent;
}

server {
#        listen *:80;
#	server_name pbx.vistep.ru;


	access_log /var/log/nginx/pbx.vistep.ru.access.log main;
        error_log /var/log/nginx/pbx.vistep.ru.error.log;

    listen 443 ssl http2;
    server_name pbx.vistep.ru;
    resolver 8.8.8.8;
    ssl_stapling on;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/pbx.vistep.ru/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/pbx.vistep.ru/privkey.pem;
    ssl_dhparam /etc/nginx/certs/dhparam.pem;
    ssl_session_timeout 24h;
    ssl_session_cache shared:SSL:2m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
    ssl_prefer_server_ciphers on;
    add_header Strict-Transport-Security "max-age=31536000;";
    add_header Content-Security-Policy-Report-Only "default-src https:; script-src https: 'unsafe-eval' 'unsafe-inline'; style-src https: 'unsafe-inline'; img-src https: data:; font-src https: data:; report-uri /csp-report";
	
	root /var/www/callme;
	index  index.php;
        location ~ /. {
                deny all; # Π·Π°ΠΏΡ€Π΅Ρ‚ для скрытых Ρ„Π°ΠΉΠ»ΠΎΠ²
        }

        location ~* /(?:uploads|files)/.*.php$ {
                deny all; # Π·Π°ΠΏΡ€Π΅Ρ‚ для Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… скриптов
        }

        location ~* ^.+.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
                access_log off;
                log_not_found off;
                expires max; # ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ статики
        }

	location ~ .php {
		root /var/www/callme;
		index  index.php;
		fastcgi_pass unix:/run/php/php5.6-fpm.sock;
	#	fastcgi_pass 127.0.0.1:9000;
		fastcgi_index index.php;
		fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
		include /etc/nginx/fastcgi_params;
		}
}

ЌС Π³ΠΎ оставам ΠΏΠ°Ρ€ΡΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°, бСзбСдноснитС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, Π΄ΠΎΠ±ΠΈΠ²Π°ΡšΠ΅Ρ‚ΠΎ сСртификат, ΠΏΠ° Π΄ΡƒΡ€ΠΈ ΠΈ ΠΈΠ·Π±ΠΎΡ€ΠΎΡ‚ Π½Π° Π²Π΅Π±-сСрвСр Π½Π°Π΄Π²ΠΎΡ€ ΠΎΠ΄ опсСгот Π½Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°Ρ‚Π° - ΠΌΠ½ΠΎΠ³Ρƒ Π΅ напишано Π·Π° ΠΎΠ²Π°. ΠΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π΅ΠΌΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΡƒΠ²Π°ΡšΠ°, Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ ΠΏΡ€Π΅ΠΊΡƒ http ΠΈ ΠΏΡ€Π΅ΠΊΡƒ https.

НиС користимС https, ајдС Π΄Π° Π³ΠΎ ΡˆΠΈΡ„Ρ€ΠΈΡ€Π°ΠΌΠ΅ сСртификатот.

Ако стС Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»Π΅ сè ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, Ρ‚ΠΎΠ³Π°Ρˆ со ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° врската Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π²Π°ΠΊΠ²ΠΎ Π½Π΅ΡˆΡ‚ΠΎ

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Asterisk ΠΈ Bitrix24

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Bitrix24

АјдС Π΄Π° создадСмС Π΄Π²Π΅ Π²Π΅Π±-ΠΊΡƒΠΊΠΈ.

Π”ΠΎΡ˜Π΄ΠΎΠ²Π½Π° Π²Π΅Π±-ΠΊΡƒΠΊΠ°.

Под администраторската смСтка (со id 1), слСдСтС ја ΠΏΠ°Ρ‚Π΅ΠΊΠ°Ρ‚Π°: Апликации -> Π’Π΅Π±-ΠΊΡƒΠΊΠΈ -> Π”ΠΎΠ΄Π°Ρ˜ Π²Π΅Π±-ΠΊΡƒΠΊΠ° -> Π”ΠΎΡ˜Π΄ΠΎΠ²Π½Π° Π²Π΅Π±-ΠΊΡƒΠΊΠ°

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Asterisk ΠΈ Bitrix24

ΠŸΠΎΠΏΠΎΠ»Π½Π΅Ρ‚Π΅ Π³ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° Π΄ΠΎΡ˜Π΄ΠΎΠ²Π½Π°Ρ‚Π° Π²Π΅Π±-ΠΊΡƒΠΊΠ° ΠΊΠ°ΠΊΠΎ Π½Π° сликитС ΠΎΠ΄ Π΅ΠΊΡ€Π°Π½ΠΎΡ‚:

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Asterisk ΠΈ Bitrix24

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Asterisk ΠΈ Bitrix24

И ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π·Π°Ρ‡ΡƒΠ²Π°Ρ˜.

По Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ, Bitrix24 ќС ја ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ URL-Ρ‚ΠΎ Π½Π° Π΄ΠΎΡ˜Π΄ΠΎΠ²Π½Π°Ρ‚Π° Π²Π΅Π±-ΠΊΡƒΠΊΠ°, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Asterisk ΠΈ Bitrix24

Π—Π°Ρ‡ΡƒΠ²Π°Ρ˜Ρ‚Π΅ ја Π²Π°ΡˆΠ°Ρ‚Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° Π½Π° URL-Ρ‚ΠΎ Π±Π΅Π· ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΈΠΎΡ‚ /ΠΏΡ€ΠΎΡ„ΠΈΠ»/ ​​- ќС сС користи Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° со дојдовни ΠΏΠΎΠ²ΠΈΡ†ΠΈ.

Јас го имам ова https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/

Појдовна Π²Π΅Π±-ΠΊΡƒΠΊΠ°.

Апликации -> Π’Π΅Π±-ΠΊΡƒΠΊΠΈ -> Π”ΠΎΠ΄Π°Ρ˜ Π²Π΅Π±-ΠΊΡƒΠΊΠ° -> Појдовна Π²Π΅Π±-ΠΊΡƒΠΊΠ°

Π”Π΅Ρ‚Π°Π»ΠΈΡ‚Π΅ сС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π½Π° сликитС ΠΎΠ΄ Π΅ΠΊΡ€Π°Π½ΠΎΡ‚:

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Asterisk ΠΈ Bitrix24

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Asterisk ΠΈ Bitrix24

Π—Π°Ρ‡ΡƒΠ²Π°Ρ˜Ρ‚Π΅ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚Π΅ Π³ΠΎ ΠΊΠΎΠ΄ΠΎΡ‚ Π·Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Asterisk ΠΈ Bitrix24

Јас Π³ΠΎ ΠΈΠΌΠ°ΠΌ ΠΎΠ²Π° xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚Π΅ Π·Π° сСбС;

Π’Π°ΠΆΠ½ΠΎ!

ΠœΠΎΡ€Π° Π΄Π° сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° SSL сСртификат Π½Π° сСрвСрот Bitrix24 (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° користитС letsencrypt), ΠΈΠ½Π°ΠΊΡƒ Bitrix api Π½Π΅ΠΌΠ° Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ. Ако ΠΈΠΌΠ°Ρ‚Π΅ ΠΎΠ±Π»Π°ΠΊ Π²Π΅Ρ€Π·ΠΈΡ˜Π°, Π½Π΅ Π³Ρ€ΠΈΠΆΠ΅Ρ‚Π΅ сС - Ρ‚Π°Π° вСќС ΠΈΠΌΠ° ssl.

Π’Π°ΠΆΠ½ΠΎ!

ΠŸΠΎΠ»Π΅Ρ‚ΠΎ β€žΠΠ΄Ρ€Π΅ΡΠ° Π½Π° ΠΏΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΠΎΡ‚β€œ ΠΌΠΎΡ€Π° Π΄Π° содрТи адрСса достапна ΠΎΠ΄ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚!

И ΠΊΠ°ΠΊΠΎ послСдСн Π΄ΠΎΠΏΠΈΡ€, Π΄Π° Π³ΠΎ инсталирамС Π½Π°ΡˆΠΈΠΎΡ‚ CallMeOut ΠΊΠ°ΠΊΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π·Π° ΠΎΡΡ‚Π²Π°Ρ€ΡƒΠ²Π°ΡšΠ΅ ΠΏΠΎΠ²ΠΈΡ†ΠΈ (Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ΠΊΠΎΠ³Π° ќС ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ Π½Π° Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° PBX, ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚ ќС ΠΎΠ΄Π»Π΅Ρ‚Π°).

Π’ΠΎ ΠΌΠ΅Π½ΠΈΡ‚ΠΎ, ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅: ПовСќС -> Π’Π΅Π»Π΅Ρ„ΠΎΠ½ΠΈΡ˜Π° -> ПовСќС -> ΠŸΠΎΡΡ‚Π°Π²ΠΊΠΈ, поставСтС Π³ΠΎ Π²ΠΎ β€žΠ‘Ρ‚Π°Π½Π΄Π°Ρ€Π΄Π΅Π½ Π±Ρ€ΠΎΡ˜ Π·Π° појдовСн ΠΏΠΎΠ²ΠΈΠΊβ€œ ΠΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°: CallMeOut ΠΈ ΠΊΠ»ΠΈΠΊΠ½Π΅Ρ‚Π΅ β€žΠ—Π°Ρ‡ΡƒΠ²Π°Ρ˜β€œ

Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° Asterisk ΠΈ Bitrix24

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Ρ•Π²Π΅Π·Π΄ΠΈΡ‡ΠΊΠ°

Π—Π° ΡƒΡΠΏΠ΅ΡˆΠ½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° ΠΏΠΎΠΌΠ΅Ρ“Ρƒ Asterisk ΠΈ Bitrix24, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ Π΄ΠΎΠ΄Π°Π΄Π΅ΠΌΠ΅ корисничкиот callme Π½Π° AMI Π½Π° manager.conf:

[callme]
secret = JD3clEB8_f23r-3ry84gJ
deny = 0.0.0.0/0.0.0.0
permit = 127.0.0.1/255.255.255.0
permit= 10.100.111.249/255.255.255.255
permit = 192.168.254.0/255.255.255.0
read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
write = system,call,agent,log,verbose,user,config,command,reporting,originate

Π‘Π»Π΅Π΄Π½ΠΎ, ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Ρ‚Ρ€ΠΈΠΊΠΎΠ²ΠΈ ΠΊΠΎΠΈ ќС Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π°Ρ‚ ΠΏΡ€Π΅ΠΊΡƒ dialplan (Π·Π° нас ΠΎΠ²Π° Π΅ extensions.ael).

ЌС ја Π΄Π°Π΄Π°ΠΌ Ρ†Π΅Π»Π°Ρ‚Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°, Π° ΠΏΠΎΡ‚ΠΎΠ° ќС Π΄Π°Π΄Π°ΠΌ ΠΎΠ±Ρ˜Π°ΡΠ½ΡƒΠ²Π°ΡšΠ΅:

globals {
    WAV=/var/www/pbx.vistep.ru/callme/records/wav; //Π’Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с WAV
    MP3=/var/www/pbx.vistep.ru/callme/records/mp3; //ΠšΡƒΠ΄Π° Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ mp3 Ρ„Π°ΠΉΠ»Ρ‹
    URLRECORDS=https://pbx.vistep.ru/callme/records/mp3;
    RECORDING=1; // Π—Π°ΠΏΠΈΡΡŒ, 1 - Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π°.
};

macro recording(calling,called) {
        if ("${RECORDING}" = "1"){
              Set(fname=${UNIQUEID}-${STRFTIME(${EPOCH},,%Y-%m-%d-%H_%M)}-${calling}-${called});
	      Set(datedir=${STRFTIME(${EPOCH},,%Y/%m/%d)});
	      System(mkdir -p ${MP3}/${datedir});
	      System(mkdir -p ${WAV}/${datedir});
              Set(monopt=nice -n 19 /usr/bin/lame -b 32  --silent "${WAV}/${datedir}/${fname}.wav"  "${MP3}/${datedir}/${fname}.mp3" && rm -f "${WAV}/${fname}.wav" && chmod o+r "${MP3}/${datedir}/${fname}.mp3");
	      Set(FullFname=${URLRECORDS}/${datedir}/${fname}.mp3);
              Set(CDR(filename)=${fname}.mp3);
	      Set(CDR(recordingfile)=${fname}.wav);
              Set(CDR(realdst)=${called});
              MixMonitor(${WAV}/${datedir}/${fname}.wav,b,${monopt});

       };
};


context incoming {
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();
        }

h => {
    Set(CDR_PROP(disable)=true); 
    Set(CallStop=${STRFTIME(epoch,,%s)}); 
    Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)}); 
    ExecIF(${ISNULL(${CallMeDISPOSITION})}?Set(CallMeDISPOSITION=${CDR(disposition)}):NoOP(=== CallMeDISPOSITION already was set ===));  
}

}


context default {

_X. => {
        Hangup();
        }
};


context dial_out {

_[1237]XX => {
	&recording(${CALLERID(number)},${EXTEN});
        Set(__CallIntNum=${CALLERID(num)})
	Set(CallStart=${STRFTIME(epoch,,%s)});
        Dial(SIP/${EXTEN},,tTr);
        Hangup();
        }

_11XXX => {
	&recording(${CALLERID(number)},${EXTEN});
	Set(CallStart=${STRFTIME(epoch,,%s)});
	Set(__CallIntNum=${CALLERID(num)});
        Dial(SIP/${EXTEN:2}@toOurAster,,t);
        Hangup();
        }

_. => {
	&recording(${CALLERID(number)},${EXTEN});
        Set(__CallIntNum=${CALLERID(num)})
	Set(CallStart=${STRFTIME(epoch,,%s)});
	Dial(SIP/${EXTEN}@toOurAster,,t);
	Hangup();
        }

h => {
        Set(CDR_PROP(disable)=true);
        Set(CallStop=${STRFTIME(epoch,,%s)});
        Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)});
	if(${ISNULL(${CallMeDISPOSITION})}) {
          Set(CallMeDISPOSITION=${CDR(disposition)});
        }
	System(curl -s http://pbx.vistep.ru/CallMeOut.php --data action=sendcall2b24 --data call_id=${CallMeCALL_ID} --data-urlencode FullFname=${FullFname} --data CallIntNum=${CallIntNum} --data CallDuration=${CallMeDURATION} --data-urlencode CallDisposition=${CallMeDISPOSITION});
}

};

Π”Π° ΠΏΠΎΡ‡Π½Π΅ΠΌΠ΅ ΠΎΠ΄ ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ: Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° Π³Π»ΠΎΠ±ΡƒΠ»ΠΈ.

ΠŸΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π£Π Π›-Π Π•ΠšΠžΠ Π”Π˜ ја складира URL-Ρ‚ΠΎ Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π·Π° снимањС Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΈ, спорСд ΠΊΠΎΠΈ Bitrix24 ќС Π³ΠΈ ΠΏΠΎΠ²Π»Π΅Ρ‡Π΅ Π²ΠΎ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π½Π°Ρ‚Π° ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠ°.

Π‘Π»Π΅Π΄Π½ΠΎ, Π½ΠΈΠ΅ смС заинтСрСсирани Π·Π° ΠΌΠ°ΠΊΡ€ΠΎ ΠΌΠ°ΠΊΡ€ΠΎ снимањС.

ОвдС, ΠΏΠΎΠΊΡ€Π°Ρ˜ ΡΠ½ΠΈΠΌΠ°ΡšΠ΅Ρ‚ΠΎ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΈ, ќС ја поставимС ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° ЦСлосно ΠΈΠΌΠ΅.

Set(FullFname=${URLRECORDS}/${datedir}/${fname}.mp3);

Ја складира цСлосната URL адрСса Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½Π° Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° (ΠΌΠ°ΠΊΡ€ΠΎΡ‚ΠΎ сС ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π° насСкадС).

АјдС Π΄Π° Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎΡ˜Π΄ΠΎΠ²Π½ΠΈΠΎΡ‚ ΠΏΠΎΠ²ΠΈΠΊ:

_. => {
	&recording(${CALLERID(number)},${EXTEN});
        Set(__CallIntNum=${CALLERID(num)})
	Set(CallStart=${STRFTIME(epoch,,%s)});
	Dial(SIP/${EXTEN}@toOurAster,,t);
	Hangup();
        }

h => {
        Set(CDR_PROP(disable)=true);
        Set(CallStop=${STRFTIME(epoch,,%s)});
        Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)});
	if(${ISNULL(${CallMeDISPOSITION})}) {
          Set(CallMeDISPOSITION=${CDR(disposition)});
        }
	System(curl -s http://pbx.vistep.ru/CallMeOut.php --data action=sendcall2b24 --data call_id=${CallMeCALL_ID} --data-urlencode FullFname=${FullFname} --data CallIntNum=${CallIntNum} --data CallDuration=${CallMeDURATION} --data-urlencode CallDisposition=${CallMeDISPOSITION});
}

Π”Π° Ρ€Π΅Ρ‡Π΅ΠΌΠ΅ Π΄Π΅ΠΊΠ° сС јавивмС Π½Π° 89991234567, Π½Π°Ρ˜ΠΏΡ€Π²ΠΎ Π΄ΠΎΠ°Ρ“Π°ΠΌΠ΅ ΠΎΠ²Π΄Π΅:

&recording(${CALLERID(number)},${EXTEN});

Ρ‚ΠΈΠ΅. Π‘Π΅ ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π° ΠΌΠ°ΠΊΡ€ΠΎΡ‚ΠΎ Π·Π° снимањС Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ ΠΈ сС поставуваат ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ.

ΠŸΠΎΠ½Π°Ρ‚Π°ΠΌΡƒ

        Set(__CallIntNum=${CALLERID(num)})
	Set(CallStart=${STRFTIME(epoch,,%s)});

Π‘Π½ΠΈΠΌΠ°ΠΌΠ΅ кој Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΡ€Π°Π» ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚ ΠΈ Π³ΠΎ снимамС Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚.

И ΠΏΠΎ Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ Π·Π°Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅, Π²ΠΎ посСбСн контСкст h

h => {
        Set(CDR_PROP(disable)=true);
        Set(CallStop=${STRFTIME(epoch,,%s)});
        Set(CallMeDURATION=${MATH(${CallStop}-${CallStart},int)});
	if(${ISNULL(${CallMeDISPOSITION})}) {
          Set(CallMeDISPOSITION=${CDR(disposition)});
        }
	System(curl -s http://pbx.vistep.ru/CallMeOut.php --data action=sendcall2b24 --data call_id=${CallMeCALL_ID} --data-urlencode FullFname=${FullFname} --data CallIntNum=${CallIntNum} --data CallDuration=${CallMeDURATION} --data-urlencode CallDisposition=${CallMeDISPOSITION});
}

ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π²Π»Π΅Π· Π²ΠΎ Ρ‚Π°Π±Π΅Π»Π°Ρ‚Π° CDR Π·Π° ΠΎΠ²Π°Π° Π΅ΠΊΡΡ‚Π΅Π½Π·ΠΈΡ˜Π° (Ρ‚Π°ΠΌΡƒ Π½Π΅ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ), поставСтС Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° Π·Π°Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚, ΠΏΡ€Π΅ΡΠΌΠ΅Ρ‚Π°Ρ˜Ρ‚Π΅ Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Ρ‚Ρ€Π°Π΅ΡšΠ΅Ρ‚ΠΎ, Π°ΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΎΡ‚ ΠΎΠ΄ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ‚ Π½Π΅ Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚ - поставСтС (ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° CallMeDISPOSITION) ΠΈ, послСдниот Ρ‡Π΅ΠΊΠΎΡ€, испратСтС сè Π΄ΠΎ Bitrix ΠΏΡ€Π΅ΠΊΡƒ систСмот Π½Π°Π²ΠΈΠ²Π°ΠΌ.

И ΡƒΡˆΡ‚Π΅ ΠΌΠ°Π»ΠΊΡƒ магија - дојдовСн ΠΏΠΎΠ²ΠΈΠΊ:

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();
        }

ОвдС Π½Π΅ интСрСсира само Π΅Π΄Π½Π° линија.

ExecIF(${CallMeCallerIDName}?Set(CALLERID(name)=${CallMeCallerIDName}):NoOp());

Π’Π°Π° ΠΌΡƒ ΠΊΠ°ΠΆΡƒΠ²Π° Π½Π° PBX Π΄Π° инсталира ID Π½Π° ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°Ρ‡ (ΠΈΠΌΠ΅) Π΅Π΄Π½Π°ΠΊΠ²Π° Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° CallMeCallerIDName.

Π‘Π°ΠΌΠ°Ρ‚Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° CallMeCallerIDName, ΠΏΠ°ΠΊ, Π΅ поставСна ΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° CallMe (Π°ΠΊΠΎ Bitrix24 ΠΈΠΌΠ° цСлосно ΠΈΠΌΠ΅ Π·Π° Π±Ρ€ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°Ρ‡ΠΎΡ‚, поставСтС Π³ΠΎ ΠΊΠ°ΠΊΠΎ ID Π½Π° ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°Ρ‡ (ΠΈΠΌΠ΅), Π½Π΅ - Π½Π΅ΠΌΠ° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ Π½ΠΈΡˆΡ‚ΠΎ).

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°

Π”Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π·Π° поставки Π·Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° - /var/www/pbx.vistep.ru/config.php

Опис Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°:

  • CallMeDEBUG β€” Π°ΠΊΠΎ 1, Ρ‚ΠΎΠ³Π°Ρˆ ситС настани ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ ΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ќС Π±ΠΈΠ΄Π°Ρ‚ запишани Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½Ρ†ΠΈΡ˜Π°, 0 β€” Π½Π΅ ΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅ Π½ΠΈΡˆΡ‚ΠΎ
  • Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ˜Π° - SIP/PJSIP/IAX/ΠΈΡ‚Π½
  • authToken β€” Ρ‚ΠΎΠΊΠ΅Π½ Π·Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Bitrix24, ΠΊΠΎΠ΄ Π·Π° ΠΎΠ²Π»Π°ΡΡ‚ΡƒΠ²Π°ΡšΠ΅ Π·Π° појдовна Π²Π΅Π±-ΠΊΡƒΠΊΠ°
  • bitrixApiUrl β€” URL Π½Π° Π΄ΠΎΡ˜Π΄ΠΎΠ²Π½Π°Ρ‚Π° Π²Π΅Π±-ΠΊΡƒΠΊΠ°, Π±Π΅Π· ΠΏΡ€ΠΎΡ„ΠΈΠ»/
  • ΠΏΡ€ΠΎΡˆΠΈΡ€ΡƒΠ²Π°ΡšΠ° β€” список Π½Π° Π½Π°Π΄Π²ΠΎΡ€Π΅ΡˆΠ½ΠΈ Π±Ρ€ΠΎΠ΅Π²ΠΈ
  • контСкст β€” контСкст Π·Π° Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΏΠΎΠ²ΠΈΠΊ
  • listener_timeout β€” Π±Ρ€Π·ΠΈΠ½Π° Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° настани ΠΎΠ΄ Ρ•Π²Π΅Π·Π΄ΠΈΡ‡ΠΊΠ°
  • Ρ•Π²Π΅Π·Π΄ΠΈΡ‡ΠΊΠ° β€” Π½ΠΈΠ·Π° со поставки Π·Π° ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ со Ρ•Π²Π΅Π·Π΄ΠΈΡ‡ΠΊΠ°Ρ‚Π°:
  • домаќин β€” IP ΠΈΠ»ΠΈ ΠΈΠΌΠ΅ Π½Π° домаќин Π½Π° сСрвСрот со Ρ•Π²Π΅Π·Π΄ΠΈΡ‡ΠΊΠ°
  • шСма β€” Π΄ΠΈΡ˜Π°Π³Ρ€Π°ΠΌ Π·Π° ΠΏΠΎΠ²Ρ€Π·ΡƒΠ²Π°ΡšΠ΅ (tcp://, tls://)
  • ΠΏΡ€ΠΈΡΡ‚Π°Π½ΠΈΡˆΡ‚Π΅ - ΠΏΡ€ΠΈΡΡ‚Π°Π½ΠΈΡˆΡ‚Π΅
  • корисничко ΠΈΠΌΠ΅ - ΠšΠΎΡ€ΠΈΡΠ½ΠΈΡ‡ΠΊΠΎ ΠΈΠΌΠ΅
  • Ρ‚Π°Ρ˜Π½Π° - Π»ΠΎΠ·ΠΈΠ½ΠΊΠ°
  • connect_timeout β€” истСк Π½Π° врската
  • read_timeout - Ρ‚Π°Ρ˜ΠΌΠ°ΡƒΡ‚ Π·Π° Ρ‡ΠΈΡ‚Π°ΡšΠ΅

ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π·Π° поставки:

 <?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

);

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° супСрвизор

Π‘ΡƒΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΠΎΡ‚ сС користи Π·Π° ΡΡ‚Π°Ρ€Ρ‚ΡƒΠ²Π°ΡšΠ΅ Π½Π° процСсот Π½Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°Ρ‡ со настани ΠΎΠ΄ Asterisk CallMeIn.php, кој Π³ΠΈ слСди Π΄ΠΎΡ˜Π΄ΠΎΠ²Π½ΠΈΡ‚Π΅ ΠΏΠΎΠ²ΠΈΡ†ΠΈ ΠΈ ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π° со Bitrix24 (ΠΏΠΎΠΊΠ°ΠΆΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠ°, ΡΠΊΡ€ΠΈΡ˜ ΠΊΠ°Ρ€Ρ‚ΠΈΡ‡ΠΊΠ° ΠΈΡ‚Π½.).

Π”Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ° Π·Π° поставки ΡˆΡ‚ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС ΠΊΡ€Π΅ΠΈΡ€Π°:

/etc/supervisord.d/callme.conf

[program:callme]
command=/usr/bin/php CallMeIn.php
directory=/var/www/pbx.vistep.ru
autostart=true
autorestart=true
startretries=5
stderr_logfile=/var/www/pbx.vistep.ru/logs/daemon.log
stdout_logfile=/var/www/pbx.vistep.ru/logs/daemon.log

Π‘Ρ‚Π°Ρ€Ρ‚ΡƒΠ²Π°Ρ˜Ρ‚Π΅ ја ΠΈ Ρ€Π΅ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ја Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°:

supervisorctl start callme
supervisorctl restart callme

ΠŸΡ€ΠΈΠΊΠ°Π· Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈΠΎΡ‚ статус Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°:

supervisorctl status callme
callme                           RUNNING   pid 11729, uptime 17 days, 16:58:07

Π—Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ

Π‘Π΅ испостави Π΄Π΅ΠΊΠ° Π΅ доста ΠΊΠΎΠΌΠΏΠ»ΠΈΡ†ΠΈΡ€Π°Π½ΠΎ, Π½ΠΎ сигурСн сум Π΄Π΅ΠΊΠ° искусСн администратор ќС ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΎ спровСдС ΠΈ Π΄Π° Π³ΠΈ Π·Π°Π΄ΠΎΠ²ΠΎΠ»ΠΈ своитС корисници.

Како ΡˆΡ‚ΠΎ Π΅ Π²Π΅Ρ‚Π΅Π½ΠΎ, Π»ΠΈΠ½ΠΊ Π΄ΠΎ github.

ΠŸΡ€Π°ΡˆΠ°ΡšΠ°, ΠΏΡ€Π΅Π΄Π»ΠΎΠ·ΠΈ - Π²Π΅ ΠΌΠΎΠ»ΠΈΠΌΠ΅ оставСтС Π³ΠΈ Π²ΠΎ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ. Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, Π΄ΠΎΠΊΠΎΠ»ΠΊΡƒ Π²Π΅ интСрСсира ΠΊΠ°ΠΊΠΎ ΠΏΠΎΠΌΠΈΠ½Π° Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚ Π½Π° ΠΎΠ²Π°Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π°, ΠΏΠΈΡˆΠ΅Ρ‚Π΅, Π° Π²ΠΎ слСдната ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° ќС сС ΠΎΠ±ΠΈΠ΄Π°ΠΌ Π΄Π° Π²ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΡ˜Π°ΠΌ сС ΠΏΠΎΠ΄Π΅Ρ‚Π°Π»Π½ΠΎ.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€