Asterisk рдЖрдгрд┐ Bitrix24 рдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

Asterisk рдЖрдгрд┐ Bitrix24 рдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг
IP-PBX Asterisk рдЖрдгрд┐ CRM Bitrix24 рд╕рдорд╛рдХрд▓рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдиреЗрдЯрд╡рд░реНрдХрдордзреНрдпреЗ рднрд┐рдиреНрди рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд, рдкрд░рдВрддреБ рддрд░реАрд╣реА, рдЖрдореНрд╣реА рдЖрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛.

рдХрд╛рд░реНрдпрд╛рддреНрдордХрдкрдгреЗ, рд╕рд░реНрд╡рдХрд╛рд╣реА рдорд╛рдирдХ рдЖрд╣реЗ:

  • Bitrix24 рдордзреАрд▓ рдХреНрд▓рд╛рдпрдВрдЯрдЪреНрдпрд╛ рдлреЛрди рдирдВрдмрд░рд╕рд╣ рд▓рд┐рдВрдХрд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░реВрди, Asterisk рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдЪреНрдпрд╛ рдЕрдВрддрд░реНрдЧрдд рдирдВрдмрд░рд▓рд╛ рдЬреЛрдбрддреЗ рдЬреНрдпрд╛рдЪреНрдпрд╛ рд╡рддреАрдиреЗ рд╣реЗ рдХреНрд▓рд┐рдХ рдХреНрд▓рд╛рдпрдВрдЯрдЪреНрдпрд╛ рдлреЛрди рдирдВрдмрд░рд╕рд╣ рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рд╣реЛрддреЗ. Bitrix24 рдордзреНрдпреЗ, рдХреЙрд▓рдЪреЗ рд░реЗрдХреЙрд░реНрдб рд░реЗрдХреЙрд░реНрдб рдХреЗрд▓реЗ рдЬрд╛рддреЗ рдЖрдгрд┐ рдХреЙрд▓рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА, рд╕рдВрднрд╛рд╖рдг рд░реЗрдХреЙрд░реНрдб рд╡рд░ рдЦреЗрдЪрд▓реЗ рдЬрд╛рддреЗ.
  • Asterisk рд╡рд░ рдмрд╛рд╣реЗрд░реВрди рдХреЙрд▓ рдпреЗрддреЛ - Bitrix24 рдЗрдВрдЯрд░рдлреЗрд╕рдордзреНрдпреЗ, рдЬреНрдпрд╛рдЪреНрдпрд╛ рдирдВрдмрд░рд╡рд░ рд╣рд╛ рдХреЙрд▓ рдЖрд▓рд╛ рд╣реЛрддрд╛ рддреНрдпрд╛рд▓рд╛ рдЖрдореНрд╣реА рдХреНрд▓рд╛рдпрдВрдЯ рдХрд╛рд░реНрдб рджрд╛рдЦрд╡рддреЛ.
    рдЕрд╕рд╛ рдХреЛрдгрддрд╛рд╣реА рдХреНрд▓рд╛рдпрдВрдЯ рдирд╕рд▓реНрдпрд╛рд╕, рдирд╡реАрди рд▓реАрдб рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрд╛рд░реНрдб рдЙрдШрдбрд╛.
    рдХреЙрд▓ рдкреВрд░реНрдг рд╣реЛрддрд╛рдЪ, рдЖрдореНрд╣реА рд╣реЗ рдХрд╛рд░реНрдбрдордзреНрдпреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рддреЛ рдЖрдгрд┐ рд╕рдВрднрд╛рд╖рдгрд╛рдЪреЗ рд░реЗрдХреЙрд░реНрдбрд┐рдВрдЧ рдХрд╛рдврддреЛ.

рдХрдЯ рдЕрдВрддрд░реНрдЧрдд, рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рддрдГрд╕рд╛рдареА рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд╕реЗ рд╕реЗрдЯ рдХрд░рд╛рдпрдЪреЗ рддреЗ рд╕рд╛рдВрдЧреЗрди рдЖрдгрд┐ рдЧрд┐рдердмрд▓рд╛ рдПрдХ рд▓рд┐рдВрдХ рджреНрдпрд╛ - рд╣реЛрдп, рд╣реЛрдп, рддреЗ рдШреНрдпрд╛ рдЖрдгрд┐ рд╡рд╛рдкрд░рд╛!

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

рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдПрдХрддреНрд░реАрдХрд░рдгрд╛рд╕ CallMe рдореНрд╣рдЯрд▓реЗ. CallMe рд╣реЗ PHP рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдПрдХ рд▓рд╣рд╛рди рд╡реЗрдм рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрд╣реЗ.

рд╡рд╛рдкрд░рд▓реЗрд▓реЗ рддрдВрддреНрд░рдЬреНрдЮрд╛рди рдЖрдгрд┐ рд╕реЗрд╡рд╛

  • рдХреГрдкрдпрд╛ PHP 5.6
  • PHP AMI рд▓рд╛рдпрдмреНрд░рд░реА
  • рд╕рдВрдЧреАрддрдХрд╛рд░
  • nginx + php fpm
  • рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ
  • AMI (Asterisk Manager Interface)
  • рдмрд┐рдЯреНрд░рд┐рдХреНрд╕ рд╡реЗрдмрд╣реБрдХреНрд╕ (рд╕рд░рд▓реАрдХреГрдд REST API рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА)

рдкреНрд░реАрд╕реЗрдЯрд┐рдВрдЧ

Asterisk рд╕рд╣ рд╕рд░реНрд╡реНрд╣рд░рд╡рд░, рддреБрдореНрд╣рд╛рд▓рд╛ рд╡реЗрдм рд╕рд░реНрд╡реНрд╣рд░ (рдЖрдордЪреНрдпрд╛рдХрдбреЗ nginx + php-fpm рдЖрд╣реЗ), рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдЖрдгрд┐ git рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХрдорд╛рдВрдб (CentOS):

yum install nginx php-fpm supervisor 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 рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдд рдЖрд╣реЗ

рдЪрд▓рд╛ рджреЛрди рд╡реЗрдмрд╣реБрдХ рдмрдирд╡реВ.

рдЗрдирдХрдорд┐рдВрдЧ рд╡реЗрдмрд╣реБрдХ.

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

Asterisk рдЖрдгрд┐ Bitrix24 рдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдЗрдирдХрдорд┐рдВрдЧ рд╡реЗрдмрд╣реБрдХрдЪреЗ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯрдордзреНрдпреЗ рднрд░рд╛:

Asterisk рдЖрдгрд┐ Bitrix24 рдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

Asterisk рдЖрдгрд┐ Bitrix24 рдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдЖрдгрд┐ save рд╡рд░ рдХреНрд▓рд┐рдХ рдХрд░рд╛.

рд╕реЗрд╡реНрд╣ рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, Bitrix24 рдЗрдирдХрдорд┐рдВрдЧ рд╡реЗрдмрд╣реБрдХрдЪреА URL рдкреНрд░рджрд╛рди рдХрд░реЗрд▓, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде:

Asterisk рдЖрдгрд┐ Bitrix24 рдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рддреБрдордЪреА URL рдЪреА рдЖрд╡реГрддреНрддреА рдЯреНрд░реЗрд▓рд┐рдВрдЧ /рдкреНрд░реЛрдлрд╛рдЗрд▓/ рд╢рд┐рд╡рд╛рдп рдЬрддрди рдХрд░рд╛ - рддреА рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рдХреЙрд▓рд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рдд рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдИрд▓.

рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рдЖрд╣реЗ https://b24-xsynia.bitrix24.ru/rest/1/7eh61lh8pahw0fwt/

рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╡реЗрдмрд╣реБрдХ.

рдЕрдиреБрдкреНрд░рдпреЛрдЧ -> рд╡реЗрдмрд╣реБрдХ -> рд╡реЗрдмрд╣реБрдХ рдЬреЛрдбрд╛ -> рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╡реЗрдмрд╣реБрдХ

рддрдкрд╢реАрд▓ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯрдордзреНрдпреЗ рдЖрд╣реЗрдд:

Asterisk рдЖрдгрд┐ Bitrix24 рдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

Asterisk рдЖрдгрд┐ Bitrix24 рдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рд╕реЗрд╡реНрд╣ рдХрд░рд╛ рдЖрдгрд┐ рдСрдереЛрд░рд╛рдпрдЭреЗрд╢рди рдХреЛрдб рдорд┐рд│рд╡рд╛

Asterisk рдЖрдгрд┐ Bitrix24 рдЪреЗ рдПрдХрддреНрд░реАрдХрд░рдг

рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рдЖрд╣реЗ xcrp2ylhzzd2v43cmfjqmkvrgrcbkni6. рддреБрдореНрд╣рд╛рд▓рд╛ рддреЗ рд╕реНрд╡рддрдГрд╡рд░ рдХреЙрдкреА рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ, рддреЗ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ!

Bitrix24 рд╕рд░реНрд╡реНрд╣рд░рд╡рд░ ssl рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ (рддреБрдореНрд╣реА letsencrypt рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛), рдЕрдиреНрдпрдерд╛ BitrixXNUMX 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

рдкреБрдвреЗ, рдбрд╛рдпрд▓рдкреНрд▓рд╛рди (рдЖрдордЪреНрдпрд╛рдХрдбреЗ 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});
}

};

рдЪрд▓рд╛ рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрди рд╕реБрд░реБрд╡рд╛рдд рдХрд░реВрдпрд╛: рдирд┐рд░реНрджреЗрд╢ рдЧреНрд▓реЛрдмрд▓реНрд╕.

рдЪрд▓ URLRECORDS рд╕рдВрднрд╛рд╖рдг рд░реЗрдХреЙрд░реНрдбрд┐рдВрдЧ рдлрд╛рдпрд▓реАрдВрдордзреНрдпреЗ 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});
}

рдпрд╛ рд╡рд┐рд╕реНрддрд╛рд░рд╛рд╕рд╛рдареА рд╕реАрдбреАрдЖрд░ рдЯреЗрдмрд▓рдордзреАрд▓ рдПрдВрдЯреНрд░реА рдмрдВрдж рдХрд░рд╛ (рддреЗрдереЗ рдЖрд╡рд╢реНрдпрдХ рдирд╛рд╣реА), рдХреЙрд▓рдЪреА рд╕рдорд╛рдкреНрддреА рд╡реЗрд│ рд╕реЗрдЯ рдХрд░рд╛, рдХрд╛рд▓рд╛рд╡рдзреАрдЪреА рдЧрдгрдирд╛ рдХрд░рд╛, рдХреЙрд▓рдЪрд╛ рдирд┐рдХрд╛рд▓ рдорд╛рд╣рд┐рдд рдирд╕рд▓реНрдпрд╛рд╕ - рд╕реЗрдЯ рдХрд░рд╛ (рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдорд▓рд╛ рдбрд┐рд╕реНрдкреЛрдЬрд┐рд╢рди рдХреЙрд▓ рдХрд░рд╛) рдЖрдгрд┐, рд╢реЗрд╡рдЯрдЪреА рдкрд╛рдпрд░реА, рд╕рд┐рд╕реНрдЯрдо рдХрд░реНрд▓рджреНрд╡рд╛рд░реЗ рд╕рд░реНрд╡рдХрд╛рд╣реА 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 тАЛтАЛinstall рдХрд░рд╛ рдХреЙрд▓рд░рдЖрдпрдбреА(рдирд╛рд╡) рдЪрд▓ CallMeCallerIDName.

CallMeCallerIDName рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕реНрд╡рддрдГ CallMe рдНрдкреНрд▓рд┐рдХреЗрд╢рдирджреНрд╡рд╛рд░реЗ рд╕реЗрдЯ рдХреЗрд▓реЗ рдЬрд╛рддреЗ (рдЬрд░ Bitrix24 рдордзреНрдпреЗ рдХреЙрд▓рд░рдЪреНрдпрд╛ рдирдВрдмрд░рд╕рд╛рдареА рдкреВрд░реНрдг рдирд╛рд╡ рдЕрд╕реЗрд▓, рддрд░ рдЖрдореНрд╣реА рддреЗ рдЕрд╕реЗ рд╕реЗрдЯ рдХрд░реВ рдХреЙрд▓рд░рдЖрдпрдбреА(рдирд╛рд╡), рдирд╛рд╣реА - рдЖрдореНрд╣реА рдХрд╛рд╣реАрд╣реА рдХрд░рдгрд╛рд░ рдирд╛рд╣реА).

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реЗрдЯрдЕрдк

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

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдЪреЗ рд╡рд░реНрдгрди:

  • рдХреЙрд▓MeDEBUG - рдЬрд░ 1, рддрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрд▓реЗрд▓реЗ рд╕рд░реНрд╡ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓реЙрдЧ рдлрд╛рдЗрд▓рд╡рд░ рд▓рд┐рд╣рд┐рд▓реЗ рдЬрд╛рддреАрд▓, 0 - рдЖрдореНрд╣реА рдХрд╛рд╣реАрд╣реА рд▓рд┐рд╣рд┐рдд рдирд╛рд╣реА
  • рдЯреЗрдХ SIP/PJSIP/IAX/рдЗ
  • authToken - Bitrix24 рдЕрдзрд┐рдХреГрддрддрд╛ рдЯреЛрдХрди, рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╡реЗрдмрд╣реБрдХ рдЕрдзрд┐рдХреГрддрддрд╛ рдХреЛрдб
  • bitrixApiUrl тАФ рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рд╡реЗрдмрд╣реБрдХрдЪреА URL, рдкреНрд░реЛрдлрд╛рдЗрд▓рд╢рд┐рд╡рд╛рдп/
  • рд╡рд┐рд╕реНрддрд╛рд░ - рдмрд╛рд╣реНрдп рд╕рдВрдЦреНрдпрд╛рдВрдЪреА рдпрд╛рджреА
  • рд╕рдВрджрд░реНрдн - рдХреЙрд▓ рдЙрддреНрдкрддреНрддреАрд╕рд╛рдареА рд╕рдВрджрд░реНрдн
  • рд╢реНрд░реЛрддрд╛_рдХрд╛рд▓рдмрд╛рд╣реНрдп - рддрд╛рд░рдХрд╛рд╡рд░реВрди рдЗрд╡реНрд╣реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЧрддреА
  • рддрд╛рд░рд╛ - рддрд╛рд░рдХрд╛рд╢реА рдХрдиреЗрдХреНрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрдЬрд╕рд╣ рдЕреЕрд░реЗ:
  • рдпрдЬрдорд╛рди - ip рдХрд┐рдВрд╡рд╛ asterisk рд╕рд░реНрд╡реНрд╣рд░рдЪреЗ рд╣реЛрд╕реНрдЯрдирд╛рд╡
  • рдпреЛрдЬрдирд╛ тАФ рдХрдиреЗрдХреНрд╢рди рдбрд╛рдпрдЧреНрд░рд╛рдо (tcp://, tls://)
  • рдкреЛрд░реНрдЯ - рдмрдВрджрд░
  • рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдирд╛рд╡ - рд╡рд╛рдкрд░рдХрд░реНрддрд╛рдирд╛рд╡
  • рдЧреБрдкреНрдд - рдкрд╛рд╕рд╡рд░реНрдб
  • рдХрдиреЗрдХреНрдЯ_рдЯрд╛рдЗрдордЖрдЙрдЯ - рдХрдиреЗрдХреНрд╢рди рдХрд╛рд▓рдмрд╛рд╣реНрдп
  • 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

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

рд╣реЗ рдЦреВрдк рдХрдареАрдг рдЭрд╛рд▓реЗ, рдкрд░рдВрддреБ рдорд▓рд╛ рдЦрд╛рддреНрд░реА рдЖрд╣реЗ рдХреА рдПрдХ рдЕрдиреБрднрд╡реА рдкреНрд░рд╢рд╛рд╕рдХ рддреНрдпрд╛рдЪреНрдпрд╛ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рдВрдирд╛ рдЕрдВрдорд▓рд╛рдд рдЖрдгрдгреНрдпрд╛рд╕ рдЖрдгрд┐ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕реЗрд▓.

рдЖрд╢реНрд╡рд╛рд╕рди, рдЧрд┐рдердмрд╢реА рджреБрд╡рд╛.

рдкреНрд░рд╢реНрди, рд╕реВрдЪрдирд╛ - рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреНрдпрд╛рдВрдордзреНрдпреЗ. рддрд╕реЗрдЪ, рдпрд╛ рдПрдХрддреНрд░реАрдХрд░рдгрд╛рдЪрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд╕рд╛ рдЭрд╛рд▓рд╛ рдпрд╛рдмрджреНрджрд▓ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕рд▓реНрдпрд╛рд╕, рд▓рд┐рд╣рд╛ рдЖрдгрд┐ рдкреБрдвреАрд▓ рд▓реЗрдЦрд╛рдд рдореА рд╕рд░реНрд╡рдХрд╛рд╣реА рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓рд╡рд╛рд░ рдкреНрд░рдХрдЯ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реЗрди.

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛