Vicidial Voicemail over Gmail not working?
Answers
-
This is because, asterisk uses localhost in order to send the email not the SMTP and Gmail often rejects the email that are not send over TLS. To do that we can send the voicemail using SMTP.
There can be 2 methods which we can use.
Method 1: Send Voicemail via External program in the hangup extension
We will use an external program to send the email with attachment with the message. This method provides more flexibility and control on what and how we want to send.
Step 1: Add the entry to the Dial plan.
[trunkinbound] ; Dialplan Entries ; FastAGI for VICIDIAL/astGUIclient call logging exten => h,1,AGI(agi://127.0.0.1:4577/call_log--HVcauses--PRI-----NODEBUG-----${HANGUPCAUSE}-----${DIALSTATUS}-----${DIALEDTIME}-----${ANSWEREDTIME}) ; Our code goes here ; exten => h,n,GotoIf($[${LEN(VM_MESSAGEFILE)}>5]?trunkinbound,h,endhere) exten => h,n,System(php /var/lib/asterisk/agi-bin/voicemail.php ${CALLERID(dnid)} ${VM_MESSAGEFILE}) ; exten => h,n,NoOp(${SYSTEMSTATUS}) exten => h,n(endhere),NoOp(END)
Step 2: Write the program which will get 2 parameter values. 1st: User Caller-ID and 2nd: Voicemail file path.
You can use PHPMailer to send the mail via Email. Here's a little snippet
<?php // ob_start(); require_once('/var/www/html/admin/dbconnect_mysqli.php'); require_once('/var/www/html/admin/functions.php'); $vm_file = $argv[0]; $vm_user = $argv[1]; $vm_path = $argv[2]; if($vm_file && $vm_user && $vm_path && file_exists($vm_path.".txt")){ $vm_data = parse_ini_file($vm_path.".txt", true); if(isset($vm_data['message']) && !empty($vm_data['message'])){ $origmailbox = $vm_data['message']['origmailbox']; $stmt="SELECT * from vicidial_voicemail where voicemail_id='$origmailbox';"; $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_assoc($rslt); if(isset($row['email']) && !empty($row['email'])){ $body = " <!DOCTYPE html> <html> <head> <style> /* You can style it accordingly*/ </style> </head> <body> <p> Dear ".$row['fullname'].", </p> <p> You have just received a voicemail on your mailbox \"".$vm_data['message']['origmailbox']."\" from ".$vm_data['message']['callerid']." on ".$vm_data['message']['origdate'].", so you might want to check when you get a chance. Thanks! </p> <table id=\"customers\"> <tr> <th colspan=\"2\">Details:</th> </tr> <tr> <td>Tollfree</td> <td>".$vm_user."</td> </tr> </table> </body> </html>"; // You can use PHPMailer to send the email to send the $body }else{ // $fastagi->verbose("\e[1;31m ##### Voicemail to email failed #####\e[0m"); } } } // $contents = ob_get_contents(); // ob_end_clean(); // $myfile = fopen("/var/lib/asterisk/agi-bin/vm_log/log.txt", "a") or die("Unable to open file!"); ?>
0
Howdy, Stranger!
Categories
- 94 All Categories
- 20 VoIP
- 7 SIP
- 16 asterisk
- 44 Programming
- 1 Nodejs
- 4 javascript
- 19 PHP
- 8 Codeigniter
- 14 database
- 1 UI/UX
- 2 Flutter
- 28 OS
- 26 Linux
- 1 Virtualization
- 1 Android
- 1 Windows
- 2 legal