{"id":438244,"date":"2024-05-13T10:57:24","date_gmt":"2024-05-13T10:57:24","guid":{"rendered":"https:\/\/webkul.com\/blog\/?p=438244"},"modified":"2026-02-11T11:46:37","modified_gmt":"2026-02-11T11:46:37","slug":"krayin-crm-voip-documentation","status":"publish","type":"post","link":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/","title":{"rendered":"Guide for Krayin CRM VoIP"},"content":{"rendered":"\n<p><a href=\"https:\/\/store.webkul.com\/krayin-crm-voip.html\" target=\"_blank\" rel=\"noreferrer noopener\">Krayin CRM VoIP<\/a> module allows the user to call over a broadband Internet connection and the user can also perform Inbound routes.<\/p>\n\n\n\n<p>With Krayin CRM VoIP you can call between the users and this module also gives the functionality to restrict the permission of the user.<\/p>\n\n\n\n<p><a href=\"https:\/\/krayincrm.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">CRM<\/a>&nbsp;is a system that is used to manage customer interaction throughout the customer life cycle between the&nbsp;customer and sales department through different<a href=\"https:\/\/krayincrm.com\/how-to-add-sources-in-krayin\/\" target=\"_blank\" rel=\"noreferrer noopener\">&nbsp;sources\/channels.<\/a><\/p>\n\n\n\n<p>Additionally, if you want the store administrator to generate leads via their WhatsApp number. You can check <a href=\"https:\/\/store.webkul.com\/krayin-crm-whatsapp-integration.html\" target=\"_blank\" rel=\"noreferrer noopener\">Krayin CRM WhatsApp<\/a>&nbsp;module.<\/p>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h2 class=\"wp-block-heading index-title\">Feature<\/h2>\n<\/div><\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Support <strong>1 to 1<\/strong> calls between the user.<\/li>\n\n\n\n<li>Call recording is also available.<\/li>\n\n\n\n<li>Admin can restrict the permission of the user.<\/li>\n\n\n\n<li>Users can download the call recordings. <\/li>\n\n\n\n<li>Inbound routes to call directly to the customer.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Krayin &#8211; Laravel CRM<\/h3>\n<\/div><\/div>\n\n\n\n<p>Krayin is built on the most popular PHP framework available in the market today named Laravel, since Krayin inherits features of Laravel, this makes Krayin super flexible and scalable CRM software.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"573\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1-1200x573.png\" alt=\"krayin dashboard\n\" class=\"wp-image-304680\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1-1200x573.png 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1-300x143.png 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1-250x119.png 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1-768x367.png 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1.png 1287w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>With the code-driven approach and also th<strong>e fully customizable structure<\/strong>, you can easily add\/change anything and can even deploy your code in the Krayin CRM.<\/p>\n\n\n\n<p><strong>Krayin<\/strong> -&gt; <\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/krayin\/laravel-crm\" target=\"_blank\" rel=\"noreferrer noopener\">Github Link<\/a>.<\/p>\n\n\n\n<p><a href=\"https:\/\/devdocs.krayincrm.com\/1.x\/introduction\/\" target=\"_blank\" rel=\"noreferrer noopener\">Documentation Link<\/a>.<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/krayin\/laravel-crm?tab=readme-ov-file#installation-and-configuration\" target=\"_blank\" rel=\"noreferrer noopener\">Readme File<\/a>(For Installation).<\/p>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Asterisk &#8211; Installation<\/h3>\n<\/div><\/div>\n\n\n\n<p>To install Asterisk 18 on Ubuntu 20.04, you can follow these steps:<br><br><strong>1:<\/strong> Update the package index upgrade the system and install the required dependencies<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&lt;code&gt;sudo apt update -y\n\nsudo apt upgrade -y\n\napt-get install unzip git sox gnupg2 curl libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev libedit-dev uuid-dev subversion -y&lt;\/code&gt;<\/pre>\n\n\n\n<p>2: Install Asterisk:<br><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">cd ~\nwget http:\/\/downloads.asterisk.org\/pub\/telephony\/asterisk\/asterisk-18-current.tar.gz\ntar -zxvf asterisk-18-current.tar.gz<\/pre>\n\n\n\n<p>3: Change to the Asterisk source directory and install the required dependencies with the following command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">cd asterisk-18.* contrib\/scripts\/get_mp3_source.sh contrib\/scripts\/install_prereq install<\/pre>\n\n\n\n<p>4: Run the following command to configure Asterisk:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">.\/configure<\/pre>\n\n\n\n<p>Next, set the menu options with the following command and set add-ons, enable core sound modules, music on hold packages, and extra sound packages:<\/p>\n\n\n\n<p>make menu select<br>Once all the components are installed, build Asterisk with the following command:<\/p>\n\n\n\n<p><br><br><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">make -j2<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5:<\/h3>\n\n\n\n<p>Install Asterisk using the following command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">make install<\/pre>\n\n\n\n<p>Next, install configs and samples using the following command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">make samples\nmake config\nldconfig<\/pre>\n\n\n\n<p>Step 6: Configure Asterisk:<br><br>You must create a separate user and group for Asterisk. You can create them with the following command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">groupadd asterisk\nuseradd -r -d \/var\/lib\/asterisk -g asterisk asterisk<\/pre>\n\n\n\n<p>Next, add some required users to the Asterisk group with the following command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">usermod -aG audio,dialout asterisk<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Set Permissions: <\/h3>\n\n\n\n<p>Now, set proper permissions and ownership using the following command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">chown -R asterisk.asterisk \/etc\/asterisk\nchown -R asterisk.asterisk \/var\/{lib,log,spool}\/asterisk\nchown -R asterisk.asterisk \/usr\/lib\/asterisk<\/pre>\n\n\n\n<p><br>Next, edit the \/etc\/default\/asterisk file and set the asterisk user as a default user:<br><br>nano \/etc\/default\/asterisk<br><br>Change the following lines:<\/p>\n\n\n\n<p>AST_USER=&#8221;asterisk&#8221;\nAST_GROUP=&#8221;asterisk&#8221;<\/p>\n\n\n\n<p>Save and close the file, then edit the Asterisk default configuration file and define the \u201crun as\u201d user and group:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">nano \/etc\/asterisk\/asterisk.conf<\/pre>\n\n\n\n<p>Change the following lines:<br><br>The user to run as.<\/p>\n\n\n\n<p>runuser = asterisk ; <\/p>\n\n\n\n<p>The group to run as.<\/p>\n\n\n\n<p>rungroup = asterisk ; <\/p>\n\n\n\n<p>Save and close the file, then restart the Asterisk service and enable it to start at system reboot with the following command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">systemctl restart asterisk\nsystemctl enable asterisk<\/pre>\n\n\n\n<p>Next, verify the status of the Asterisk service with the following command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">systemctl status asteriskkrayin CRM Configuration<\/pre>\n\n\n\n<p>In some cases, you should get the following error:<br><br>radcli: rc_read_config: rc_read_config: can&#8217;t open \/etc\/radiusclient-ng\/radiusclient.conf: No such file or directory<\/p>\n\n\n\n<p>You can resolve this error using the following commands:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">sed -i &#039;s&quot;;\\&#091;radius\\]&quot;\\&#091;radius\\]&quot;g&#039; \/etc\/asterisk\/cdr.conf\nsed -i &#039;s&quot;;radiuscfg =&gt; \/usr\/local\/etc\/radiusclient-ng\/radiusclient.conf&quot;radiuscfg =&gt; \/etc\/radcli\/radiusclient.conf&quot;g&#039; \/etc\/asterisk\/cdr.conf\nsed -i &#039;s&quot;;radiuscfg =&gt; \/usr\/local\/etc\/radiusclient-ng\/radiusclient.conf&quot;radiuscfg =&gt; \/etc\/radcli\/radiusclient.conf&quot;g&#039; \/etc\/asterisk\/cel.conf<\/pre>\n\n\n\n<p>Next, stop and start the Asterisk service again with the following command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">systemctl stop asterisk\nsystemctl start asterisk<\/pre>\n\n\n\n<p>Next, connect to the Asterisk command-line interface with the following command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">asterisk -rvv<\/pre>\n\n\n\n<p>Install other required packages like apache, php and composer.<\/p>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\"><\/h3>\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Asterisk Post-Installation Configuration Guide<\/h2>\n\n\n\n<p>This guide explains the required updates to&nbsp;<strong>PJSIP<\/strong>&nbsp;and&nbsp;<strong>HTTP<\/strong>&nbsp;configuration files after installing Asterisk.<br>These updates enable&nbsp;<strong>SIP, TLS, and WebRTC<\/strong>&nbsp;functionality.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1. Update&nbsp;<code>pjsip.conf<\/code><\/h3>\n\n\n\n<p>nano \/etc\/asterisk\/pjsip.conf\n<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">;; SIP configurations\n&#091;SIMPLETRANS]\ntype=transport\nprotocol=udp\nbind=0.0.0.0:5060\n\n&#091;transport-tls]\ntype=transport\nprotocol=tls\nbind=0.0.0.0:5061\nmethod=tlsv1_2\ncert_file=\/etc\/asterisk\/keys\/asterisk.pem\npriv_key_file=\/etc\/asterisk\/keys\/asterisk.key\nverify_client=no\nverify_server=no\nrequire_client_cert=no\n\n;; WEBRTC configurations\n&#091;system]\ntype=system\ntimer_t1=500\ntimer_b=32000\ndisable_tcp_switch=yes\n\n&#091;global]\ntype=global\nmax_initial_qualify_time=0\nkeep_alive_interval=90\ncontact_expiration_check_interval=30\ndefault_voicemail_extension=*97\nunidentified_request_count=3\nunidentified_request_period=5\nunidentified_request_prune_interval=30\nmwi_tps_queue_high=500\nmwi_tps_queue_low=-1\nmwi_disable_initial_unsolicited=yes\nsend_contact_status_on_update_registration=yes\n\n&#091;transport-wss]\ntype=transport\nprotocol=wss\nbind=0.0.0.0:8089\nlocal_net=10.10.0.9\/16\nlocal_net=10.116.0.6\/20\nexternal_media_address=accommodating-unflecked-leone.ngrok-free.dev\nexternal_signaling_address=accommodating-unflecked-leone.ngrok-free.dev\nmethod=tlsv1_2\nverify_client=no\nrequire_client_cert=no\nallow_reload=yes\n\n&#091;webrtc-phones](!)\ncontext=main-context\ntransport=transport-wss\nallow=!all,opus,ulaw,alaw,vp8,vp9,gsm,g729,g723\nwebrtc=yes\n\n;pjsip accounts\n#tryinclude pjsipaccounts\/*\n#tryinclude trunkpjsipsaccounts\/*&lt;a href=&quot;https:\/\/github.com\/sagarkumar-webkul\/krayin-voip-installation-setup#1-update-pjsipconf&quot;&gt;&lt;\/a&gt;<\/pre>\n\n\n\n<p><br>Now configure the PJSIP transport settings inside <strong>\/etc\/asterisk\/pjsip.conf<\/strong>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&#091;SIMPLETRANS]\ntype=transport\nprotocol=udp\nbind=0.0.0.0:5060<\/pre>\n\n\n\n<p><br>Next, configure secure SIP using TLS:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&#091;transport-tls]\ntype=transport\nprotocol=tls\nbind=0.0.0.0:5061\nmethod=tlsv1_2\ncert_file=\/etc\/asterisk\/keys\/asterisk.pem\npriv_key_file=\/etc\/asterisk\/keys\/asterisk.key\nverify_client=no\nverify_server=no\nrequire_client_cert=no<\/pre>\n\n\n\n<p>This enables encrypted SIP on port 5061 using TLS v1.2.<\/p>\n\n\n\n<p><br>Now configure system-level PJSIP tuning:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&#091;system]\ntype=system\ntimer_t1=500\ntimer_b=32000\ndisable_tcp_switch=yes<\/pre>\n\n\n\n<p>These settings control SIP retransmission timers and prevent automatic UDP to TCP switching.<\/p>\n\n\n\n<p><br>Next, configure global PJSIP settings:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&#091;global]\ntype=global\nmax_initial_qualify_time=0\nkeep_alive_interval=90\ncontact_expiration_check_interval=30\ndefault_voicemail_extension=*97\nunidentified_request_count=3\nunidentified_request_period=5\nunidentified_request_prune_interval=30\nmwi_tps_queue_high=500\nmwi_tps_queue_low=-1\nmwi_disable_initial_unsolicited=yes\nsend_contact_status_on_update_registration=yes<\/pre>\n\n\n\n<p>This section handles keepalive, voicemail defaults, and SIP security protections against brute-force attacks.<\/p>\n\n\n\n<p><br>Now configure WebRTC Secure WebSocket transport:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&#091;transport-wss]\ntype=transport\nprotocol=wss\nbind=0.0.0.0:8089<\/pre>\n\n\n\n<p>This enables WebRTC SIP signaling over secure WebSocket (WSS).<\/p>\n\n\n\n<p><br>Next, edit the HTTP configuration file:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">nano \/etc\/asterisk\/http.conf<\/pre>\n\n\n\n<p>Update it with the following configuration:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">&#091;general]\nenabled=yes\nenablestatic=yes\nbindaddr=0.0.0.0\nbindport=8088\n\ntlsenable=yes\ntlsbindaddr=0.0.0.0:8089\ntlscertfile=\/etc\/asterisk\/keys\/asterisk.pem\ntlsprivatekey=\/etc\/asterisk\/keys\/asterisk.key<\/pre>\n\n\n\n<p>This enables HTTP (8088) and HTTPS\/WSS (8089) for WebRTC.<\/p>\n\n\n\n<p><br>After making changes, reload Asterisk:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">asterisk -rx &quot;core reload&quot;<\/pre>\n\n\n\n<p>Ensure the following firewall ports are open: 5060 (UDP), 5061 (TLS), 8088 (HTTP), and 8089 (HTTPS\/WSS).<br><br>4. Firewall \/ Ports<\/p>\n\n\n\n<p>Ensure the following ports are open:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Port<\/th><th>Protocol<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td>5060<\/td><td>UDP<\/td><td>SIP<\/td><\/tr><tr><td>5061<\/td><td>TLS<\/td><td>Secure SIP<\/td><\/tr><tr><td>8088<\/td><td>TCP<\/td><td>HTTP<\/td><\/tr><tr><td>8089<\/td><td>TCP<\/td><td>HTTPS \/ WSS (WebRTC)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">5. Notes<\/h3>\n\n\n\n<p>TLS certificates must exist at:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">\/etc\/asterisk\/keys\/asterisk.pem\n\/etc\/asterisk\/keys\/asterisk.key<\/pre>\n\n\n\n<p><strong>If the certificates do not exist, follow the steps below:<\/strong><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">1. Create a Directory for Keys<\/h4>\n\n\n\n<p>First, ensure the directory exists:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">sudo mkdir -p \/etc\/asterisk\/keys\nsudo chown asterisk:asterisk \/etc\/asterisk\/keys\nsudo chmod 700 \/etc\/asterisk\/keys<\/pre>\n\n\n\n<p>This ensures Asterisk has permission to read the key and certificate files.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2. Generate a Private Key<\/h4>\n\n\n\n<p>The private key is required to create the certificate. Use OpenSSL:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">sudo openssl genrsa -out \/etc\/asterisk\/keys\/asterisk.key 2048<\/pre>\n\n\n\n<p><strong>asterisk.key<\/strong> is your private key. Keep it secure.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">3. Generate a Certificate Signing Request (CSR)<\/h4>\n\n\n\n<p>The CSR contains information about your domain and organization and is used to generate the certificate:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">sudo openssl req -new -key \/etc\/asterisk\/keys\/asterisk.key -out \/etc\/asterisk\/keys\/asterisk.csr<\/pre>\n\n\n\n<p>OpenSSL will prompt you to fill in the following details:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">Country Name (2 letter code) &#091;AU]: IN\nState or Province Name (full name) &#091;Some-State]: Delhi\nLocality Name (eg, city) &#091;]: Delhi\nOrganization Name (eg, company) &#091;Company Ltd]: MyCompany\nOrganizational Unit Name (eg, section) &#091;]: IT\nCommon Name (eg, FQDN or YOUR name) &#091;]: mydomain.com\nEmail Address &#091;]: admin@mydomain.com<\/pre>\n\n\n\n<p><strong>Important:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The Common Name (CN) must match the domain used to access Asterisk (for WebRTC TLS). Example: <strong>pbx.mydomain.com<\/strong><\/li>\n\n\n\n<li>For local testing, you may use your server IP (e.g., 10.10.0.9).<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">4. Generate a Self-Signed Certificate<\/h4>\n\n\n\n<p>For testing or internal use, generate a self-signed certificate:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">sudo openssl x509 -req -days 365 -in \/etc\/asterisk\/keys\/asterisk.csr -signkey \/etc\/asterisk\/keys\/asterisk.key -out \/etc\/asterisk\/keys\/asterisk.pem<\/pre>\n\n\n\n<p><strong>-days 365<\/strong> means the certificate will be valid for one year (adjustable).<\/p>\n\n\n\n<p><strong>asterisk.pem<\/strong> is the public certificate paired with your private key.<\/p>\n\n\n\n<p>Now you should have:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">\/etc\/asterisk\/keys\/asterisk.key   &lt;-- private key\n\/etc\/asterisk\/keys\/asterisk.pem   &lt;-- certificate<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">5. (Optional) Verify the Certificate<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\">openssl x509 -in \/etc\/asterisk\/keys\/asterisk.pem -text -noout<\/pre>\n\n\n\n<p>You should see details such as the domain (CN), validity period, and issuer information.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">6. Using CA-Signed Certificates (Optional for Production)<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Generate a CSR as shown in Step 3.<\/li>\n\n\n\n<li>Submit <strong>asterisk.csr<\/strong> to a certificate authority (e.g., Let\u2019s Encrypt, DigiCert, GoDaddy).<\/li>\n\n\n\n<li>Download the signed certificate.<\/li>\n\n\n\n<li>Replace <strong>asterisk.pem<\/strong> with the signed certificate.<\/li>\n\n\n\n<li>Keep <strong>asterisk.key<\/strong> unchanged.<\/li>\n<\/ul>\n\n\n\n<p><strong>Note:<\/strong> Port 8089 is shared for HTTPS and WSS (WebRTC).<\/p>\n\n\n\n<p>If using NAT or tunneling services (such as ngrok), make sure to configure <code>external_media_address<\/code> and <code>external_signaling_address<\/code> properly inside <strong>pjsip.conf<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><br>1. install Apache<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\">sudo apt-get install apache2\n\nNow we need to configure apache document root for standard user home directory like we can create a www\/html directory in the home directory of standard user instead of root directory.\n\nWe need to change the apache document root in the configuration file of apache2 on path \/etc\/apache2\/apache2.conf from \/var\/www\/html to \/homw\/username\/www\/ and we must set AllowOverride to ALL.\n\nNext we need to set the document root path to \/home\/vagrant\/www\/html\/public in \/etc\/apache2\/sites-available\/000-default.conf \n\nNext we need to provide permission on apache document root to asterisk user and need to set apache run user to asterisk in the configuration file present on path \/etc\/apache2\/envvars and after all steps given above, we need to enable rewrite module using command &quot;a2enmod rewrite&quot; and restart apache2 service using command &quot;service apache2 restart&quot; \n\n2. install php 8.2<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\">sudo add-apt-repository ppa:ondrej\/php\nsudo apt-get update\napt-get -y install php8.2 php8.2-curl php8.2-intl php8.2-gd php8.2-xml php8.2-common php8.2-xsl php8.2-mbstring php8.2-zip php8.2-xml php8.2-bz2 php8.2-common php8.2-phpdbg php8.2-mysql php8.2-fpm php8.2-cli php8.2-cgi libpshp8.2-embed libapache2-mod-php8.2 php8.2-mailparse php8.2-xdebug php8.2-imap php8.2-imagick php8.2-redis php8.2-apcu php8.2-bcmath php8.2-gmp php8.2-soap php8.2-sqlite3<\/pre>\n\n\n\n<p>3. install the composer<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">\nphp -r &quot;copy(&#039;https:\/\/getcomposer.org\/installer&#039;, &#039;composer-setup.php&#039;);&quot;\nphp -r &quot;if (hash_file(&#039;sha384&#039;, &#039;composer-setup.php&#039;) === &#039;dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6&#039;) { echo &#039;Installer verified&#039;; } else { echo &#039;Installer corrupt&#039;; unlink(&#039;composer-setup.php&#039;); } echo PHP_EOL;&quot;\nphp composer-setup.php\nphp -r &quot;unlink(&#039;composer-setup.php&#039;);&quot;\nsudo mv composer.phar \/usr\/local\/bin\/composer\n\n\n4. Configuring Asterisk for WebRTC Clients\n\nplease read the asterisk official documentation for the same.\n\nhttps:&#047;&#047;docs.asterisk.org\/Configuration\/WebRTC\/Configuring-Asterisk-for-WebRTC-Clients\/<\/pre>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Laravel VoIP API<\/h3>\n<\/div><\/div>\n\n\n\n<p><a href=\"#requirements\"><\/a><strong>Requirements<\/strong> &#8211; <\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>SERVER<\/strong>: Apache 2<\/li>\n\n\n\n<li><strong>RAM<\/strong>: 2 GB or higher.<\/li>\n\n\n\n<li><strong>PHP<\/strong>: 8.2 or higher.<\/li>\n\n\n\n<li><strong>For SQLite users<\/strong>: 3 or higher.<\/li>\n\n\n\n<li><strong>Composer<\/strong>: 2 or higher.<\/li>\n<\/ul>\n\n\n\n<p><strong>Note:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>PBX (Private Branch Exchange)<\/strong>: It is an open-source that gives the tools to build a phone system tailored to their needs. PBX refers to the private telephone network within a country. We will integrate it with VoIP while setting up the package.<br>A PBX is a system that acts like a <strong>central brain for all company phone calls<\/strong>. It connects employees to each other using extensions (like 101, 102), and also handles incoming and outgoing calls to external phone numbers. A PBX decides <strong>who should receive a call, how it should be routed, and what happens if no one answers<\/strong>\u2014for example, sending the call to voicemail, a queue, or another agent.<\/li>\n\n\n\n<li><strong>Lines<\/strong>: A <strong>line<\/strong> in VoIP is the capacity that allows <strong>one phone call at a time<\/strong>, so more lines mean more people can talk simultaneously.<br>These companies sell phone numbers and calling capacity (lines):<\/li>\n\n\n\n<li><strong>Common Number:<\/strong> A common number is the main business phone number shown to customers, and the company must purchase this number themselves from a VoIP provider.<br>These are the some providers offer business phone numbers along with call capacity (lines) for handling customer calls.\n<ul class=\"wp-block-list\">\n<li><strong>Twilio<\/strong><br>Buy local, mobile, or toll-free numbers<br> <a href=\"https:\/\/www.twilio.com\/phone-numbers\">https:\/\/www.twilio.com\/phone-numbers<\/a><\/li>\n\n\n\n<li><strong>Plivo<\/strong><br>Purchase voice numbers and SIP trunks<br> <a href=\"https:\/\/www.plivo.com\/voice\/did\/\">https:\/\/www.plivo.com\/voice\/did\/<\/a><\/li>\n\n\n\n<li><strong>Telnyx<\/strong><br>Phone numbers with high call capacity<br> <a href=\"https:\/\/telnyx.com\/products\/phone-numbers\">https:\/\/telnyx.com\/products\/phone-numbers<\/a><\/li>\n\n\n\n<li><strong>Vonage (Nexmo)<\/strong><br>Voice-enabled numbers worldwide<br> <a href=\"https:\/\/www.vonage.com\/communications-apis\/voice\/dial-toll-free\/\">https:\/\/www.vonage.com\/communications-apis\/voice\/dial-toll-free\/<\/a><\/li>\n\n\n\n<li><strong>DIDWW<\/strong><br>Dedicated business phone numbers<br> <a href=\"https:\/\/www.didww.com\">https:\/\/www.didww.com<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"#installation-and-configuration\"><\/a>Installation and Configuration<\/h3>\n\n\n\n<p><a href=\"#execute-these-commands-below-in-order\"><\/a>Execute these commands below, in order<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">composer install<\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Find the<strong> .env<\/strong> file in the root directory and change the <strong>APP_URL<\/strong> param to your <strong>domain<\/strong>.<\/li>\n\n\n\n<li>Also, Configure the <strong>Database<\/strong> parameters inside the<strong> .env<\/strong> file.<\/li>\n<\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\">php artisan voip:install<\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Krayin VoIP<\/h1>\n\n\n\n<p>The Krayin VoIP Extension is a powerful addition to your Krayin CRM, the extension enables calling features over the internet.<\/p>\n\n\n\n<p><a href=\"#requirements\"><\/a><strong>Requirements<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Krayin<\/strong>: v1.2.5<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"#installation\"><\/a>Installation<\/h2>\n\n\n\n<p>To install the Krayin VoIP Extension, follow these steps:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\">Unzip the respective extension zip and then merge &quot;packages&quot; folders into project root directory..\n\nOpen the composer.json file and add the following line under the &#039;psr-4&#039; section: &quot;Webkul\\\\VoIP\\\\&quot;: &quot;packages\/Webkul\/VoIP\/src&quot;\n\nIn the config\/app.php file, add the following line under the &#039;providers&#039; section: Webkul\\VoIP\\Providers\\VoIPServiceProvider::class,\n\nRun the following commands to complete the setup: composer dump-autoload php artisan migrate php artisan vendor:publish --force -&gt; Press the number before &quot;Webkul\\VoIP\\Providers\\VoIPServiceProvider&quot; and then press enter. php artisan optimize:clear\n\nAdd below view render events on following path.In packages\/Webkul\/Admin\/src\/Resources\/views\/layouts\/nav-top.blade.php after line no. 20{!! view_render_event(&#039;admin.layouts.nav-top.quick-create.before&#039;) !!}In packages\/Webkul\/Admin\/src\/Resources\/views\/settings\/users\/create.blade.php after line no. 216{!! view_render_event(&#039;admin.settings.users.create.form_controls.permission.tab.after&#039;) !!}In packages\/Webkul\/Admin\/src\/Resources\/views\/settings\/users\/edit.blade.php after line no. 231{!! view_render_event(&#039;admin.settings.users.edit.form_controls.permission.tab.after&#039;, &#091;&#039;admin&#039; =&gt; $admin]) !!}<\/pre>\n\n\n\n<p>After following these steps, the Krayin VoIP Extension should be successfully installed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Module configuration<\/h2>\n\n\n\n<p>After installing the module, the store admin will first configure the module.<\/p>\n\n\n\n<p>On the Krayin Dashboard, the admin will navigate to <strong>the Setting -&gt; Other Setting section. <\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/2166-103-80-65-178.ngrok-free.app_laravel-crm_public_admin_settingsWebkul-store-screenshots.webp\" alt=\"krayin CRM Configuration\" class=\"wp-image-440479\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/2166-103-80-65-178.ngrok-free.app_laravel-crm_public_admin_settingsWebkul-store-screenshots.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/2166-103-80-65-178.ngrok-free.app_laravel-crm_public_admin_settingsWebkul-store-screenshots-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/2166-103-80-65-178.ngrok-free.app_laravel-crm_public_admin_settingsWebkul-store-screenshots-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/2166-103-80-65-178.ngrok-free.app_laravel-crm_public_admin_settingsWebkul-store-screenshots-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Then click on <strong>VOIP<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_2-4.webp\" alt=\"krayin CRM Configuration\" class=\"wp-image-439719\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_2-4.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_2-4-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_2-4-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_2-4-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>In the General section, the admin will :-<\/p>\n\n\n\n<p><strong>Status<\/strong>: Enable\/Disable the module.<\/p>\n\n\n\n<p><strong>Secure WebSocket Server (TLS)<\/strong>: Enter the Secure WebSocket Server (TLS). <br>This is the <strong>secure WebSocket URL<\/strong> used for real-time voice communication in the browser.<\/p>\n\n\n\n<p>Required for modern browsers (Chrome, Firefox, Edge)<\/p>\n\n\n\n<p>WebRTC (browser calling) uses <strong>WebSocket Secure (WSS)<\/strong><\/p>\n\n\n\n<p>TLS encrypts data so voice traffic is <strong>safe and private<\/strong><br>example:- wss:\/\/voip.example.com<\/p>\n\n\n\n<p><strong>WebSocket Port<\/strong>: <br>This is the <strong>port number<\/strong> used by the WebSocket server.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>WebSocket handshake starts over HTTP\/HTTPS<\/li>\n\n\n\n<li>The port depends on how your VoIP server is configured<\/li>\n<\/ul>\n\n\n\n<p><strong>Common ports:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>8080<\/code> \u2192 Custom setups<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>443<\/code> \u2192 Recommended (HTTPS \/ WSS)<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>8089<\/code> \u2192 Often used by Asterisk WebSocket<\/li>\n<\/ul>\n\n\n\n<p>The WebSocket handshake operates over HTTP, so the port is whatever the HTTP\/WebSocket server wants to use<\/p>\n\n\n\n<p><strong>WebSocket Path<\/strong>: Enters the WebSocket Path.<br><br>A WebSocket path is essentially the part of the URL that specifies the endpoint on the server where the WebSocket connection will be established.<\/p>\n\n\n\n<p><strong>Domain<\/strong>: Enter the Domain.<\/p>\n\n\n\n<p>After this the admin will Configure the API setting.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_api_cred.webp\" alt=\"krayin CRM Configuration\" class=\"wp-image-440484\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_api_cred.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_api_cred-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_api_cred-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_api_cred-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Here the admin will:-<\/p>\n\n\n\n<p><strong>Email:<\/strong> Enters the Email.<\/p>\n\n\n\n<p><strong>Password: <\/strong>Enters the password.<\/p>\n\n\n\n<p><strong>Host URL: <\/strong>Enter the VoIP server Host URL.<\/p>\n\n\n\n<p>Then click on save.<\/p>\n\n\n\n<p>Also, the admin can sync users to VOIP. By clicking on <strong>sync users to VOIP<\/strong> placed on the top of API Credentials.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_api_cred_2.webp\" alt=\"krayin CRM Configuration\" class=\"wp-image-440485\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_api_cred_2.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_api_cred_2-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_api_cred_2-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_api_cred_2-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Adding user in Krayin CRM VOIP<\/h3>\n<\/div><\/div>\n\n\n\n<p>For adding users in Krayin VOIP, the admin navigates to<strong> Settings -&gt; Users. <\/strong><\/p>\n\n\n\n<p>In the users, the admin will click on the <strong>Create User<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_0.webp\" alt=\"krayin CRM Configuration\" class=\"wp-image-439712\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_0.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_0-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_0-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_0-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Now, the admin will create a new user by:-<\/p>\n\n\n\n<p>In <strong>General Section:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The admin will enter the name of the new user.<\/li>\n\n\n\n<li>Enters the Email of the user.<\/li>\n\n\n\n<li>Enable the status of the user.<\/li>\n\n\n\n<li>Enter the password, then Enter the confirmed password.<\/li>\n<\/ul>\n\n\n\n<p>After this, the admin will save the user. Then the admin will grant permission to the user.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_9.webp\" alt=\"krayin CRM Configuration\" class=\"wp-image-439713\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_9.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_9-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_9-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_9-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Here the admin will:-<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Groups:<\/strong> Select the groups.<\/li>\n\n\n\n<li><strong>Role: <\/strong>The admin selects the role for the user as <strong>Administrator\/User<\/strong>.<\/li>\n\n\n\n<li><strong>View Permission:<\/strong> Set the permission for the respected Role.<\/li>\n<\/ul>\n\n\n\n<p>Now, the admin will set The VoIP setting for the user.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_8.webp\" alt=\"krayin CRM Configuration\" class=\"wp-image-439715\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_8.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_8-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_8-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_8-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Here is the admin Will:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>SIP user:<\/strong> Enter the SIP User.<\/li>\n\n\n\n<li><strong>SIP Password:<\/strong> Enter the password.<\/li>\n<\/ul>\n\n\n\n<p>Then, click on the save as a user.<\/p>\n\n\n\n<p>The admin can check the list of the user.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_7.webp\" alt=\"krayin CRM Configuration\" class=\"wp-image-439710\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_7.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_7-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_7-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_crm_voip_7-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">User &#8211; Workflow<\/h3>\n<\/div><\/div>\n\n\n\n<p>Now the user logged in to the <strong>Krayin CRM VoIP<\/strong> by entering their credentials.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_user_login.webp\" alt=\"crayin crm user login\" class=\"wp-image-439744\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_user_login.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_user_login-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_user_login-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/krayin_user_login-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>After login, the user will navigate to the<strong> VoIP<\/strong> section. Then the user will click on the <strong>Trunks.<\/strong><\/p>\n\n\n\n<p>Here the user will get the list of <strong>Trunks<\/strong>.<\/p>\n\n\n\n<p>VoIP Trunks are&nbsp;<strong>phone lines that transmit calls over the Internet<\/strong>. A VoIP provider can assign a local number to one or more cities or countries and route it to the PBX phone system. <\/p>\n\n\n\n<p>Usually, VoIP trunks are cheaper than traditional PSTN trunks.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/trunks-2.webp\" alt=\"crayin crm user trunks\" class=\"wp-image-440511\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/trunks-2.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/trunks-2-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/trunks-2-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/trunks-2-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>The users can also create trunks, by clicking on <strong>Create Trunk<\/strong>.<br>8. How to Purchase and Configure a SIP Trunk via Twilio<\/p>\n\n\n\n<p>Twilio provides SIP Trunking services that allow your Asterisk server to make and receive external calls through the public telephone network (PSTN).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 1: Create a Twilio Account<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to <strong>https:\/\/www.twilio.com<\/strong><\/li>\n\n\n\n<li>Create an account and verify your email<\/li>\n\n\n\n<li>Complete phone verification<\/li>\n\n\n\n<li>Add billing details (Twilio requires an active billing account for trunking)<\/li>\n<\/ul>\n\n\n\n<p>After login, you will access the Twilio Console dashboard.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 2: Purchase a Phone Number<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Navigate to <strong>Phone Numbers \u2192 Manage \u2192 Buy a Number<\/strong><\/li>\n\n\n\n<li>Choose your country<\/li>\n\n\n\n<li>Select a number that supports <strong>Voice<\/strong><\/li>\n\n\n\n<li>Purchase the number<\/li>\n<\/ul>\n\n\n\n<p>This number will be used to receive incoming calls.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 3: Create a SIP Trunk<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to <strong>Elastic SIP Trunking \u2192 Trunks<\/strong><\/li>\n\n\n\n<li>Click <strong>Create New Trunk<\/strong><\/li>\n\n\n\n<li>Enter a trunk name (e.g., KrayinTrunk)<\/li>\n\n\n\n<li>Create the trunk<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Step 4: Configure Termination (Outbound Calls)<\/h4>\n\n\n\n<p>Inside your created trunk:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open <strong>Termination<\/strong> settings<\/li>\n\n\n\n<li>Set Authentication to <strong>Credential List<\/strong><\/li>\n\n\n\n<li>Create a new Credential List<\/li>\n\n\n\n<li>Add a username and password<\/li>\n<\/ul>\n\n\n\n<p>These credentials will be used in your Asterisk <strong>pjsip.conf<\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 5: Configure Origination (Inbound Calls)<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to <strong>Origination<\/strong> settings<\/li>\n\n\n\n<li>Add your Asterisk public IP address<\/li>\n\n\n\n<li>Set port to <strong>5060<\/strong> (or 5061 if using TLS)<\/li>\n\n\n\n<li>Choose transport protocol (UDP or TLS)<\/li>\n<\/ul>\n\n\n\n<p>This allows Twilio to send incoming calls to your Asterisk server.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 6: Assign Phone Number to Trunk<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to <strong>Phone Numbers<\/strong><\/li>\n\n\n\n<li>Select the number you purchased<\/li>\n\n\n\n<li>Assign it to the created SIP Trunk<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Important Notes<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ensure your server has a public IP address.<\/li>\n\n\n\n<li>Firewall must allow SIP traffic (5060\/5061).<\/li>\n\n\n\n<li>For production, use TLS and secure authentication.<\/li>\n\n\n\n<li>Configure proper dialplan in <strong>extensions.conf<\/strong> for inbound\/outbound routing.<\/li>\n<\/ul>\n\n\n\n<p>Your Twilio SIP trunk is now ready to make and receive calls through Asterisk and Krayin CRM.<\/p>\n\n\n\n<p>Here the user will:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enter the User Name.<\/li>\n\n\n\n<li>Enter the Password.<\/li>\n\n\n\n<li>Enter the Server IP.<\/li>\n\n\n\n<li>Enter the Server Port. <\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/create-trunks-call.webp\" alt=\"krayin CRM VoIP\" class=\"wp-image-439762\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/create-trunks-call.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/create-trunks-call-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/create-trunks-call-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/create-trunks-call-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Then, the user will save the Trunk.<\/p>\n\n\n\n<p>The Trunk has been successfully created.<\/p>\n\n\n\n<p>Now, the user will navigate to <strong>Inbound Routes.<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/DID-number-1.webp\" alt=\"voip feature krayin crm\" class=\"wp-image-440489\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/DID-number-1.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/DID-number-1-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/DID-number-1-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/DID-number-1-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>The user can also create new Inbound Routes. By clicking on <strong>Create Inbound Routes<\/strong>.  <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/create-inbound-routes.webp\" alt=\"krayin CRM VoIP\" class=\"wp-image-439760\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/create-inbound-routes.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/create-inbound-routes-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/create-inbound-routes-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/create-inbound-routes-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Call Recording <\/h3>\n\n\n\n<p>The admin and the user can check the call recording between the users or with the customer.<\/p>\n\n\n\n<p>For this, they have to navigate to <strong>VoIP -&gt; Call Recordings<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-5.webp\" alt=\"krayin CRM VoIP\" class=\"wp-image-439758\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-5.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-5-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-5-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-5-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Call Through Krayin CRM VoIP<\/h3>\n<\/div><\/div>\n\n\n\n<p>The user can check their contact list.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"943\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-1-1-1200x943.webp\" alt=\"call on krayin VoIP\" class=\"wp-image-439797\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-1-1-1200x943.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-1-1-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-1-1-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-1-1-768x603.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-1-1-1536x1207.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-1-1.webp 2000w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>In the Krayin CRM VoIP, the user can check the recent call logs.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"943\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-4-1200x943.webp\" alt=\"call on krayin VoIP\" class=\"wp-image-439796\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-4-1200x943.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-4-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-4-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-4-768x603.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-4-1536x1207.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-1-4.webp 2000w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>The user can call through Krayin CRM VoIP. For this the user will enter the number in the dial pad.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1200\" height=\"943\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-2-1-1200x943.webp\" alt=\"call on krayin VoIP\" class=\"wp-image-439798\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-2-1-1200x943.webp 1200w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-2-1-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-2-1-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-2-1-768x603.webp 768w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-2-1-1536x1207.webp 1536w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-2-1.webp 2000w\" sizes=\"(max-width: 1200px) 100vw, 1200px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>Then, click on the call icon.<\/p>\n\n\n\n<p><strong>On the other side<\/strong><\/p>\n\n\n\n<p>The user\/ customer will pick up the call.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1120\" height=\"880\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-4-1.webp\" alt=\"call on krayin VoIP\" class=\"wp-image-439795\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-4-1.webp 1120w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-4-1-300x236.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-4-1-250x196.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Untitled-4-1-768x603.webp 768w\" sizes=\"(max-width: 1120px) 100vw, 1120px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<p>By clicking on the Accept(Green) button. They pick up the call and the call recording will start.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1118\" height=\"816\" src=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Call-over-the-Internet1-1.webp\" alt=\"call on krayin VoIP\" class=\"wp-image-440600\" srcset=\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Call-over-the-Internet1-1.webp 1118w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Call-over-the-Internet1-1-300x219.webp 300w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Call-over-the-Internet1-1-250x182.webp 250w, https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2024\/05\/Call-over-the-Internet1-1-768x561.webp 768w\" sizes=\"(max-width: 1118px) 100vw, 1118px\" loading=\"lazy\" \/><\/figure>\n\n\n\n<div class=\"wk-index-wrap\"><div class=\"block-wrap\">\n<h3 class=\"wp-block-heading index-title\">Support<\/h3>\n<\/div><\/div>\n\n\n\n<p>So, that is all about <strong>Krayin CRM VoIP<\/strong>. If you have any queries regarding the plugin, contact us at&nbsp;<a href=\"https:\/\/webkul.uvdesk.com\/en\/customer\/create-ticket\/\" target=\"_blank\" rel=\"noreferrer noopener\">Webkul Support System<\/a><strong>.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Krayin CRM VoIP module allows the user to call over a broadband Internet connection and the user can also perform Inbound routes. With Krayin CRM VoIP you can call between the users and this module also gives the functionality to restrict the permission of the user. CRM&nbsp;is a system that is used to manage customer <a href=\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/\">[&#8230;]<\/a><\/p>\n","protected":false},"author":604,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3683,1],"tags":[],"class_list":["post-438244","post","type-post","status-publish","format-standard","hentry","category-e-crm","category-uncategorized"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Guide for krayin CRM VoIP Module<\/title>\n<meta name=\"description\" content=\"The Krayin CRM VoIP module guide helps the user to call over a broadband Internet connection and the user can also perform Inbound routes.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Guide for krayin CRM VoIP Module\" \/>\n<meta property=\"og:description\" content=\"The Krayin CRM VoIP module guide helps the user to call over a broadband Internet connection and the user can also perform Inbound routes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/\" \/>\n<meta property=\"og:site_name\" content=\"Webkul Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/webkul\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-05-13T10:57:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-11T11:46:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1-1200x573.png\" \/>\n<meta name=\"author\" content=\"Devesh Kumar Upadhyay\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@webkul\" \/>\n<meta name=\"twitter:site\" content=\"@webkul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Devesh Kumar Upadhyay\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/\"},\"author\":{\"name\":\"Devesh Kumar Upadhyay\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/b63cf810d250bc48b35b1e0ecef01660\"},\"headline\":\"Guide for Krayin CRM VoIP\",\"datePublished\":\"2024-05-13T10:57:24+00:00\",\"dateModified\":\"2026-02-11T11:46:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/\"},\"wordCount\":2293,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1-1200x573.png\",\"articleSection\":[\"E-CRM\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/\",\"url\":\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/\",\"name\":\"Guide for krayin CRM VoIP Module\",\"isPartOf\":{\"@id\":\"https:\/\/webkul.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1-1200x573.png\",\"datePublished\":\"2024-05-13T10:57:24+00:00\",\"dateModified\":\"2026-02-11T11:46:37+00:00\",\"description\":\"The Krayin CRM VoIP module guide helps the user to call over a broadband Internet connection and the user can also perform Inbound routes.\",\"breadcrumb\":{\"@id\":\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#primaryimage\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1.png\",\"width\":1287,\"height\":615,\"caption\":\"krayin-1\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/webkul.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Guide for Krayin CRM VoIP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/webkul.com\/blog\/#website\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"name\":\"Webkul Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/webkul.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/webkul.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/webkul.com\/blog\/#organization\",\"name\":\"WebKul Software Private Limited\",\"url\":\"https:\/\/webkul.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"contentUrl\":\"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png\",\"width\":380,\"height\":380,\"caption\":\"WebKul Software Private Limited\"},\"image\":{\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/webkul\/\",\"https:\/\/x.com\/webkul\",\"https:\/\/www.instagram.com\/webkul\/\",\"https:\/\/www.linkedin.com\/company\/webkul\",\"https:\/\/www.youtube.com\/user\/webkul\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/b63cf810d250bc48b35b1e0ecef01660\",\"name\":\"Devesh Kumar Upadhyay\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/536cdf5f4b28d866e06ac8c2706217f6604a121d3a226d3b4ee3b8f4fa0ebe3a?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/536cdf5f4b28d866e06ac8c2706217f6604a121d3a226d3b4ee3b8f4fa0ebe3a?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g\",\"caption\":\"Devesh Kumar Upadhyay\"},\"description\":\"Devesh is a dynamic Business Analyst specializing in Magento commerce platform. He brings a keen analytical mindset to understanding business needs and optimizing processes. Devesh excels in bridging the gap between technical solutions and business objectives, ensuring seamless project execution.\",\"url\":\"https:\/\/webkul.com\/blog\/author\/devesh-upadhya645\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Guide for krayin CRM VoIP Module","description":"The Krayin CRM VoIP module guide helps the user to call over a broadband Internet connection and the user can also perform Inbound routes.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/","og_locale":"en_US","og_type":"article","og_title":"Guide for krayin CRM VoIP Module","og_description":"The Krayin CRM VoIP module guide helps the user to call over a broadband Internet connection and the user can also perform Inbound routes.","og_url":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/","og_site_name":"Webkul Blog","article_publisher":"https:\/\/www.facebook.com\/webkul\/","article_published_time":"2024-05-13T10:57:24+00:00","article_modified_time":"2026-02-11T11:46:37+00:00","og_image":[{"url":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1-1200x573.png","type":"","width":"","height":""}],"author":"Devesh Kumar Upadhyay","twitter_card":"summary_large_image","twitter_creator":"@webkul","twitter_site":"@webkul","twitter_misc":{"Written by":"Devesh Kumar Upadhyay","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#article","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/"},"author":{"name":"Devesh Kumar Upadhyay","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/b63cf810d250bc48b35b1e0ecef01660"},"headline":"Guide for Krayin CRM VoIP","datePublished":"2024-05-13T10:57:24+00:00","dateModified":"2026-02-11T11:46:37+00:00","mainEntityOfPage":{"@id":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/"},"wordCount":2293,"commentCount":0,"publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"image":{"@id":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1-1200x573.png","articleSection":["E-CRM"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/","url":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/","name":"Guide for krayin CRM VoIP Module","isPartOf":{"@id":"https:\/\/webkul.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#primaryimage"},"image":{"@id":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#primaryimage"},"thumbnailUrl":"https:\/\/webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1-1200x573.png","datePublished":"2024-05-13T10:57:24+00:00","dateModified":"2026-02-11T11:46:37+00:00","description":"The Krayin CRM VoIP module guide helps the user to call over a broadband Internet connection and the user can also perform Inbound routes.","breadcrumb":{"@id":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#primaryimage","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/09\/krayin-1.png","width":1287,"height":615,"caption":"krayin-1"},{"@type":"BreadcrumbList","@id":"https:\/\/webkul.com\/blog\/krayin-crm-voip-documentation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/webkul.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Guide for Krayin CRM VoIP"}]},{"@type":"WebSite","@id":"https:\/\/webkul.com\/blog\/#website","url":"https:\/\/webkul.com\/blog\/","name":"Webkul Blog","description":"","publisher":{"@id":"https:\/\/webkul.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/webkul.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/webkul.com\/blog\/#organization","name":"WebKul Software Private Limited","url":"https:\/\/webkul.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","contentUrl":"https:\/\/cdnblog.webkul.com\/blog\/wp-content\/uploads\/2021\/08\/webkul-logo-accent-sq.png","width":380,"height":380,"caption":"WebKul Software Private Limited"},"image":{"@id":"https:\/\/webkul.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/webkul\/","https:\/\/x.com\/webkul","https:\/\/www.instagram.com\/webkul\/","https:\/\/www.linkedin.com\/company\/webkul","https:\/\/www.youtube.com\/user\/webkul\/"]},{"@type":"Person","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/b63cf810d250bc48b35b1e0ecef01660","name":"Devesh Kumar Upadhyay","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/webkul.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/536cdf5f4b28d866e06ac8c2706217f6604a121d3a226d3b4ee3b8f4fa0ebe3a?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/536cdf5f4b28d866e06ac8c2706217f6604a121d3a226d3b4ee3b8f4fa0ebe3a?s=96&d=https%3A%2F%2Fcdnblog.webkul.com%2Fblog%2Fwp-content%2Fuploads%2F2019%2F10%2Fmike.png&r=g","caption":"Devesh Kumar Upadhyay"},"description":"Devesh is a dynamic Business Analyst specializing in Magento commerce platform. He brings a keen analytical mindset to understanding business needs and optimizing processes. Devesh excels in bridging the gap between technical solutions and business objectives, ensuring seamless project execution.","url":"https:\/\/webkul.com\/blog\/author\/devesh-upadhya645\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/438244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/users\/604"}],"replies":[{"embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/comments?post=438244"}],"version-history":[{"count":64,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/438244\/revisions"}],"predecessor-version":[{"id":536591,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/posts\/438244\/revisions\/536591"}],"wp:attachment":[{"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/media?parent=438244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/categories?post=438244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webkul.com\/blog\/wp-json\/wp\/v2\/tags?post=438244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}