рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕24 рдХрд╛ рдПрдХреАрдХрд░рдг

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕24 рдХрд╛ рдПрдХреАрдХрд░рдг
рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ IP-PBX Asterisk рдФрд░ CRM Bitrix24 рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдлрд┐рд░ рднреА рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред

рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рд╕рдм рдХреБрдЫ рдорд╛рдирдХ рд╣реИ:

  • Bitrix24 рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдлрд╝реЛрди рдирдВрдмрд░ рд╡рд╛рд▓реЗ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░, Asterisk рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдирдВрдмрд░ рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдлрд╝реЛрди рдирдВрдмрд░ рд╕реЗ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдУрд░ рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред Bitrix24 рдореЗрдВ, рдХреЙрд▓ рдХрд╛ рд░рд┐рдХреЙрд░реНрдб рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдмрд╛рддрдЪреАрдд рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдирд┐рдХрд╛рд▓реА рдЬрд╛рддреА рд╣реИред
  • рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдХреЛ рдмрд╛рд╣рд░ рд╕реЗ рдХреЙрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреА рд╣реИ - Bitrix24 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╣рдо рдЙрд╕ рдХрд░реНрдордЪрд╛рд░реА рдХреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛рд░реНрдб рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рдирдВрдмрд░ рдкрд░ рдпрд╣ рдХреЙрд▓ рдЖрдИ рдереАред
    рдпрджрд┐ рдРрд╕рд╛ рдХреЛрдИ рдЧреНрд░рд╛рд╣рдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдирдИ рд▓реАрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдб рдЦреЛрд▓реЗрдВрдЧреЗред
    рдЬреИрд╕реЗ рд╣реА рдХреЙрд▓ рдкреВрд░реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рд╣рдо рдЗрд╕реЗ рдХрд╛рд░реНрдб рдкрд░ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рддрдЪреАрдд рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдирд┐рдХрд╛рд▓ рд▓реЗрддреЗ рд╣реИрдВред

рдХрдЯ рдХреЗ рдиреАрдЪреЗ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЕрдкрдиреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЖрдкрдХреЛ рдЬреАрдердм рдХрд╛ рд▓рд┐рдВрдХ рджреЗрдВ - рд╣рд╛рдБ, рд╣рд╛рдБ, рдЗрд╕реЗ рд▓реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ!

рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рд╡рд░рдг

рд╣рдордиреЗ рдЕрдкрдиреЗ рдПрдХреАрдХрд░рдг рдХреЛ CallMe рдХрд╣рд╛ред CallMe PHP рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред

рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдБ рдФрд░ рд╕реЗрд╡рд╛рдПрдБ

  • PHP 5.6
  • рдкреАрдПрдЪрдкреА рдПрдПрдордЖрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА
  • рд╕рдВрдЧреАрддрдХрд╛рд░
  • Nginx + php-fpm
  • рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ
  • рдПрдПрдордЖрдИ (рддрд╛рд░рд╛рдВрдХрди рдкреНрд░рдмрдВрдзрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕)
  • рдмрд┐рдЯреНрд░рд┐рдХреНрд╕ рд╡реЗрдмрд╣реБрдХ (рд╕рд░рд▓реАрдХреГрдд REST API рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди)

presetting

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдкрд░, рдЖрдкрдХреЛ рдПрдХ рд╡реЗрдм рд╕рд░реНрд╡рд░ (рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ 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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдЗрдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░реЗрдВред

рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЖрдкрдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕24 рдХрд╛ рдПрдХреАрдХрд░рдг

Bitrix24 рдХреА рд╕реНрдерд╛рдкрдирд╛

рдЖрдЗрдП рджреЛ рд╡реЗрдмрд╣реБрдХ рдмрдирд╛рдПрдВред

рдЖрдиреЗ рд╡рд╛рд▓реА рд╡реЗрдмрд╣реБрдХ.

рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЦрд╛рддреЗ рдХреЗ рдЕрдВрддрд░реНрдЧрдд (рдЖрдИрдбреА 1 рдХреЗ рд╕рд╛рде), рдкрде рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВ: рдПрдкреНрд▓рд┐рдХреЗрд╢рди -> рд╡реЗрдмрд╣реБрдХ -> рд╡реЗрдмрд╣реБрдХ рдЬреЛрдбрд╝реЗрдВ -> рдЗрдирдХрдорд┐рдВрдЧ рд╡реЗрдмрд╣реБрдХ

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕24 рдХрд╛ рдПрдХреАрдХрд░рдг

рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдмрд╣реБрдХ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рднрд░реЗрдВ:

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕24 рдХрд╛ рдПрдХреАрдХрд░рдг

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕24 рдХрд╛ рдПрдХреАрдХрд░рдг

рдФрд░ рд╕реЗрд╡ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ.

рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, Bitrix24 рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдмрд╣реБрдХ рдХрд╛ URL рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕24 рдХрд╛ рдПрдХреАрдХрд░рдг

рдпреВрдЖрд░рдПрд▓ рдХреЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдВрддрд┐рдо /рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓/ рдХреЗ рдмрд┐рдирд╛ рд╕рд╣реЗрдЬреЗрдВ - рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореЗрд░реЗ рдкрд░ рдпрд╣ рд╣реИ https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/

рдирд┐рд╡рд░реНрддрдорд╛рди рд╡реЗрдмрд╣реБрдХ.

рдПрдкреНрд▓рд┐рдХреЗрд╢рди -> рд╡реЗрдмрд╣реБрдХ -> рд╡реЗрдмрд╣реБрдХ рдЬреЛрдбрд╝реЗрдВ -> рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╡реЗрдмрд╣реБрдХ

рд╡рд┐рд╡рд░рдг рдлрд┐рд░ рд╕реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкрд░ рд╣реИрдВ:

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕24 рдХрд╛ рдПрдХреАрдХрд░рдг

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕24 рдХрд╛ рдПрдХреАрдХрд░рдг

рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб рд╕рд╣реЗрдЬреЗрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕24 рдХрд╛ рдПрдХреАрдХрд░рдг

рдореЗрд░реЗ рдкрд░ рдпрд╣ рд╣реИ xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рднреА рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛; рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдорд╣рддреНрд╡рдкреВрд░реНрдг!

Bitrix24 рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ SSL рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЖрдк Letsencrypt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдЕрдиреНрдпрдерд╛ Bitrix рдПрдкреАрдЖрдИ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрд▓рд╛рдЙрдб рд╕рдВрд╕реНрдХрд░рдг рд╣реИ, рддреЛ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ - рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрд╕рдПрд╕рдПрд▓ рд╣реИред

рдорд╣рддреНрд╡рдкреВрд░реНрдг!

"рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрддрд╛" рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдкрд╣реБрдВрдЪ рдпреЛрдЧреНрдп рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!

рдФрд░ рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдЗрдП рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ CallMeOut рдХреЛ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ (рддрд╛рдХрд┐ рдЬрдм рдЖрдк рдкреАрдмреАрдПрдХреНрд╕ рдкрд░ рдирдВрдмрд░ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рддреЛ рдХреЙрд▓ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢ рдЙрдбрд╝ рдЬрд╛рдП)ред

рдореЗрдиреВ рдореЗрдВ, рдЪреБрдиреЗрдВ: рдЕрдзрд┐рдХ -> рдЯреЗрд▓реАрдлреЛрдиреА -> рдЕрдзрд┐рдХ -> рд╕реЗрдЯрд┐рдВрдЧреНрд╕, "рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓ рдирдВрдмрд░" рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ: CallMeOut рдФрд░ "рд╕рд╣реЗрдЬреЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред

рдПрд╕реНрдЯрд░рд┐рд╕реНрдХ рдФрд░ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕24 рдХрд╛ рдПрдХреАрдХрд░рдг

рддрд╛рд░рд╛рдВрдХрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

Asterisk рдФрд░ Bitrix24 рдХреЗ рдмреАрдЪ рд╕рдлрд▓ рдЗрдВрдЯрд░реЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ AMI рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ callme рдХреЛ рдореИрдиреЗрдЬрд░.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

рдЗрд╕рдХреЗ рдмрд╛рдж, рдХрдИ рддрд░рдХреАрдмреЗрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдбрд╛рдпрд▓рдкреНрд▓рд╛рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХреНрд╕рдЯреЗрдВрд╢рди.рдПрдПрд▓ рд╣реИ)ред

рдореИрдВ рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдКрдВрдЧрд╛, рдФрд░ рдлрд┐рд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреВрдВрдЧрд╛:

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

рдЗрд╕ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд▓рд┐рдП рд╕реАрдбреАрдЖрд░ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ (рд╡рд╣рд╛рдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ), рдХреЙрд▓ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ, рдЕрд╡рдзрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ, рдпрджрд┐ рдХреЙрд▓ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЬреНрдЮрд╛рдд рдирд╣реАрдВ рд╣реИ - рд╕реЗрдЯ (рдЪрд░) рдХреЙрд▓рдореАрдбрд┐рд╕реНрдкреЛрдЬрд╝рд┐рд╢рди) рдФрд░, рдЕрдВрддрд┐рдо рдЪрд░рдг, рд╕рд┐рд╕реНрдЯрдо рдХрд░реНрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдмрд┐рдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рднреЗрдЬреЗрдВред

рдФрд░ рдереЛрдбрд╝рд╛ рдФрд░ рдЬрд╛рджреВ - рдПрдХ рдЗрдирдХрдорд┐рдВрдЧ рдХреЙрд▓:

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

рд╡рд╣ рдкреАрдмреАрдПрдХреНрд╕ рдХреЛ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреА рд╣реИ рдХреЙрд▓рд░рдЖрдИрдбреА(рдирд╛рдо) рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдХреЗ рдмрд░рд╛рдмрд░ рдХреЙрд▓рдореАрдХреЙрд▓рд░рдЖрдИрдбреАрдирд╛рдо.

CallMeCallerIDName рд╡реИрд░рд┐рдПрдмрд▓, рдмрджрд▓реЗ рдореЗрдВ, CallMe рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрджрд┐ Bitrix24 рдореЗрдВ рдХреЙрд▓рд░ рдХреЗ рдирдВрдмрд░ рдХрд╛ рдкреВрд░рд╛ рдирд╛рдо рд╣реИ, рддреЛ рдЗрд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдХреЙрд▓рд░рдЖрдИрдбреА(рдирд╛рдо), рдирд╣реАрдВ - рд╣рдо рдХреБрдЫ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ)ред

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯ рдХрд░рдирд╛

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ - /var/www/pbx.vistep.ru/config.php

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг:

  • рдХреЙрд▓рдореАрдбреЗрдмрдЧ - рдпрджрд┐ 1, рддреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рд╕рднреА рдИрд╡реЗрдВрдЯ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦреЗ рдЬрд╛рдПрдВрдЧреЗ, 0 - рд╣рдо рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ
  • рддрдХрдиреАрдХ - рдПрд╕рдЖрдИрдкреА/рдкреАрдЬреЗрдПрд╕рдЖрдИрдкреА/рдЖрдИрдПрдПрдХреНрд╕/рдЖрджрд┐
  • authToken - Bitrix24 рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдЯреЛрдХрди, рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╡реЗрдмрд╣реБрдХ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛрдб
  • bitrixApiUrl - рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╡реЗрдмрд╣реБрдХ рдХрд╛ рдпреВрдЖрд░рдПрд▓, рдмрд┐рдирд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ/
  • рд╡рд┐рд╕реНрддрд╛рд░ - рдмрд╛рд╣рд░реА рдирдВрдмрд░реЛрдВ рдХреА рд╕реВрдЪреА
  • рдкреНрд░рд╕рдВрдЧ - рдХреЙрд▓ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрджрд░реНрдн
  • рд╢реНрд░реЛрддрд╛_рд╕рдордпрдмрд╛рд╣реНрдп - рддрд╛рд░рд╛рдВрдХрди рд╕реЗ рдШрдЯрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЧрддрд┐
  • рддрд╛рд░рд╛рдВрдХрди - рддрд╛рд░рд╛рдВрдХрди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рдгреА:
  • рдореЗрдЬрдмрд╛рди - рддрд╛рд░рд╛рдВрдХрди рд╕рд░реНрд╡рд░ рдХрд╛ рдЖрдИрдкреА рдпрд╛ рд╣реЛрд╕реНрдЯрдирд╛рдо
  • рдпреЛрдЬрдирд╛ - рдХрдиреЗрдХреНрд╢рди рдЖрд░реЗрдЦ (рдЯреАрд╕реАрдкреА: //, рдЯреАрдПрд▓рдПрд╕: //)
  • рдмрдВрджрд░рдЧрд╛рд╣ - рдкрддреНрддрди
  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо
  • рдЧреБрдкреНрдд - рдкрд╛рд╕рд╡рд░реНрдб
  • рдХрдиреЗрдХреНрдЯ_рдЯрд╛рдЗрдордЖрдЙрдЯ - рд░рд┐рд╢реНрддреЛрдВ рдХрд╛ рд╕рдордп рдмрд╛рд╣рд░
  • рд╕рдордп рд╕реЗ рдкрдврдиреЗ рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд - рд╕рдордп рд╕реЗ рдкрдврдиреЗ рдХреА рд╕рдордп рд╕реАрдорд╛ рд╕рдорд╛рдкреНрдд

рдЙрджрд╛рд╣рд░рдг рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓:

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

рдирд┐рд╖реНрдХрд░реНрд╖

рдпрд╣ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдПрдХ рдЕрдиреБрднрд╡реА рдкреНрд░рд╢рд╛рд╕рдХ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЦреБрд╢ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред

рд╡рд╛рджреЗ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЬреАрдердм рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ.

рдкреНрд░рд╢реНрди, рд╕реБрдЭрд╛рд╡ - рдХреГрдкрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЫреЛрдбрд╝реЗрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдПрдХреАрдХрд░рдг рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХреИрд╕реЗ рд╣реБрдЖ, рддреЛ рд▓рд┐рдЦреЗрдВ, рдФрд░ рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╕рдм рдХреБрдЫ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдкреНрд░рдХрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ