QUESTION Incredible PBX Google Voice to Email Setup

Discussion in 'Open Discussion' started by Merlin, Oct 11, 2018.

  1. Merlin

    Merlin Member

    Joined:
    Mar 10, 2017
    Messages:
    32
    Likes Received:
    1
    Can anybody confirm if they are able to receive emails when somebody leaves a voicemail using Incredible PBX and HiFormance. Missed calls show up in my email, but I don't receive emails for actual messages. Apologies if this has been asked before. I couldn't find anything referencing this issue. Thanks.
     
  2. ajonate

    ajonate Member

    Joined:
    Jun 18, 2018
    Messages:
    68
    Likes Received:
    11
    Check to see if the /usr/local/src/sendmailmp3 file exists. If it's not there check out this thread.

    https://pbxinaflash.com/community/threads/voicemail-to-email.23120/

    PS - The file location had a typo. Should be:
    /usr/local/sbin/sendmailmp3
     
    #2 ajonate, Oct 12, 2018
    Last edited: Oct 13, 2018
  3. Merlin

    Merlin Member

    Joined:
    Mar 10, 2017
    Messages:
    32
    Likes Received:
    1
    Thanks for the help. I checked that directory and it's empty, however /usr/local/sbin does contain that file (listed below). I assume that's what you meant from reading the other thread.

    Code:
    #! /bin/sh
    # Asterisk voicemail attachment conversion script, including voice recognition
    # Use Voice Recognition Engine provided by IBM Bluemix Sppech-to-Text API
    
    # Revision history :
    # 22/11/2010 - V1.0 - Creation by N. Bernaerts
    # 07/02/2012 - V1.1 - Add handling of mails without attachment (thanks to Paul Thompson)
    # 01/05/2012 - V1.2 - Use mktemp, pushd & popd
    # 08/05/2012 - V1.3 - Change mp3 compression to CBR to solve some smartphone compatibility (thanks to Luca Mancino)
    # 01/08/2012 - V1.4 - Add PATH definition to avoid any problem (thanks to Christopher Wolff)
    # 01/06/2013 - V1.5 - Improved call quality of MP3
    # 10/11/2014 - V1.6 - TB Sampson fix for iPhone playback too: http://nerd.bz/1vTN3Hq
    # 12/03/2017 - V2.3 - modified for use with IBM Bluemix Speech-to-Text API (thanks to Jason Klein and Ward Mundy & Associates LLC)
    # 01/17/2018 - V2.4 - added "echo -e" for proper newline treatment in messages (thanks Bill Simon)
    
    # Special thanks: https://jrklein.com/2015/08/17/asterisk-voicemail-transcription-via-ibm-bluemix-speech-to-text-api/
    
    # set credentials for IBM Bluemix Speech-to-Text API
    # Obtain Bluemix credentials here: https://www.ibm.com/watson/developercloud/doc/common/getting-started-credentials.html
    # 1. Create Bluemix account here: https://console.ng.bluemix.net/registration/?target=/catalog/%3fcategory=watson
    # 2, Confirm registration by replying to email
    # 3. Login to Bluemix: https://console.ng.bluemix.net/login?state=/catalog/?category=watson
    # 4. Agree to T&C, name your organization, and name your space (STT)
    # 5. Choose Watson Speech to Text service and click Create
    # 6. When Speech to Text-kb opens, click Service Credentials tab
    # 7. In Actions column, click View Credentials and copy your username and password
    # 8. Insert deciphered Bluemix API username and password below:
    # 9. Logout by clicking on image icon in upper right corner of dialog window
    API_USERNAME="hidden"
    API_PASSWORD="hidden"
    
    
    # set PATH
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    
    # save the current directory
    pushd .
    
    # create a temporary directory and cd to it
    TMPDIR=$(mktemp -d)
    cd $TMPDIR
    
    # dump the stream to a temporary file
    cat >> stream.org
    
    # get the boundary
    BOUNDARY=`grep "boundary=" stream.org | cut -d'"' -f 2`
    
    # cut the file into parts
    # stream.part - header before the boundary
    # stream.part1 - header after the boundary
    # stream.part2 - body of the message
    # stream.part3 - attachment in base64 (WAV file)
    # stream.part4 - footer of the message
    awk '/'$BOUNDARY'/{i++}{print > "stream.part"i}' stream.org
    
    # if mail is having no audio attachment (plain text)
    PLAINTEXT=`cat stream.part1 | grep 'plain'`
    if [ "$PLAINTEXT" != "" ]
    then
    
      # prepare to send the original stream
      cat stream.org > stream.new
    
    # else, if mail is having audio attachment
    else
    
      # cut the attachment into parts
      # stream.part3.head - header of attachment
      # stream.part3.wav.base64 - wav file of attachment (encoded base64)
      sed '7,$d' stream.part3 > stream.part3.wav.head
      sed '1,6d' stream.part3 > stream.part3.wav.base64
    
      # convert the base64 file to a wav file
      dos2unix -o stream.part3.wav.base64
      base64 -di stream.part3.wav.base64 > stream.part3.wav
    
      # convert wav file to mp3 file
      # -b 24 is using CBR, giving better compatibility on smartphones (you can use -b 32 to increase quality)
      # -V 2 is using VBR, a good compromise between quality and size for voice audio files
      # lame -m m -b 64 stream.part3.wav stream.part3.mp3
      # TB Sampson mod for iPhone AND Android playback support
      lame --abr 24 -mm -h -c --resample 22.050 stream.part3.wav stream.part3.mp3
      # convert back mp3 to base64 file
      base64 stream.part3.mp3 > stream.part3.mp3.base64
    
      # generate the new mp3 attachment header
      # change Type: audio/x-wav to Type: audio/mpeg
      # change name="msg----.wav" to name="msg----.mp3"
      sed 's/x-wav/mpeg/g' stream.part3.wav.head | sed 's/.wav/.mp3/g' > stream.part3.mp3.head
    
    CURL_OPTS=""
    #API_USERNAME="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
    #API_PASSWORD="XXXXXXXXXXXX"
    
    # Send WAV to Watson Speech to Text API. Must use "Narrowband" (aka 8k) model since WAV is 8k sample.
    curl -s $CURL_OPTS -k -u $API_USERNAME:$API_PASSWORD -X POST \
        --limit-rate 40000 \
        --header "Content-Type: audio/wav" \
        --data-binary @stream.part3.wav \
        "https://stream.watsonplatform.net/speech-to-text/api/v1/recognize?continuous=true&model=en-US_NarrowbandModel" 1>audio.txt
    
    # Extract transcript results from JSON response
    TRANSCRIPT=`cat audio.txt | grep transcript | sed 's#^.*"transcript": "##g' | sed 's# "$##g'`
    
      # generate first part of mail body, converting it to LF only
      mv stream.part stream.new
      cat stream.part1 >> stream.new
      cat stream.part2 >> stream.new
      echo -e "\r\n\r\n Message contents: $TRANSCRIPT" >> stream.new
      cat stream.part3.mp3.head >> stream.new
      dos2unix -o stream.new
    
      # append base64 mp3 to mail body, keeping CRLF
      unix2dos -o stream.part3.mp3.base64
      cat stream.part3.mp3.base64 >> stream.new
    
      # append end of mail body, converting it to LF only
      echo "" >> stream.tmp
      echo "" >> stream.tmp
      cat stream.part4 >> stream.tmp
      dos2unix -o stream.tmp
      cat stream.tmp >> stream.new
    
    fi
    
    # send the mail thru sendmail
    cat stream.new | sendmail -t
    
    # go back to original directory
    popd
    
    # remove all temporary files and temporary directory
    rm -Rf $TMPDIR
    
    
    
    I left a few voicemails after following that thread to see what happens and did not receive any emails. I installed IBM Watson speech to text the other day since I planned on porting some numbers. For good measure, I replaced the Watson sendmailmp3 version with the version from the website linked in your other post. Still no dice about receiving emails. The mail log file is completely unreadable, so I have no idea what it says.

    Issued following command below to test out sendmail and have not gotten anything yet

    echo "test" | mail -s test message my@myemail.com .

    The email is associated with a Gsuite Business account, so I'm not sure if it's an issue with them, HiFormance or IncrediblePBX settings. My gut it telling me Gsuite due to the mail log, but I'm not sure how to proceed.

    /var/log/maillog shows the following

    Oct 12 17:49:22 incrediblepbx sendmail[7448]: w9CMZL3B007446: to=<me@mywebsite.com>, delay=00:14:01, xdelay=00:14:01, mailer=esmtp, pri=142239, relay=aspmx2.googlemail.com. [64.233.186.27], dsn=4.0.0, stat=Deferred: Connection timed out with aspmx2.googlemail.com.

    So it appears that Gsuite is the culprit. I've received the usual number of emails today with no problems. Make sense since the last day I stopped receiving the annoying fail2ban notifications was 10/2/2018.
     
  4. ajonate

    ajonate Member

    Joined:
    Jun 18, 2018
    Messages:
    68
    Likes Received:
    11
    Try issuing these commands and see what you get.

    curl -v telnet://smtp.gmail.com:25
    curl -v telnet://smtp.gmail.com:587

    After you see whether it connects you can break out of the process with a ctrl-c.
     
    #4 ajonate, Oct 12, 2018
    Last edited: Oct 12, 2018
  5. Merlin

    Merlin Member

    Joined:
    Mar 10, 2017
    Messages:
    32
    Likes Received:
    1
    The results are listed below.

    root@noreply:/usr/sbin $ curl -v telnet://smtp.gmail.com:25
    * About to connect() to smtp.gmail.com port 25 (#0)
    * Trying 173.194.205.108... Connection timed out
    * Trying 173.194.205.109... Connection timed out
    * Trying 2607:f8b0:400d:c02::6d... Connection timed out
    * couldn't connect to host
    * Closing connection #0
    curl: (7) couldn't connect to host
    WARNING: Always run Incredible PBX behind a secure firewall.
    root@noreply:/usr/sbin $ curl -v telnet://smtp.gmail.com:587
    * About to connect() to smtp.gmail.com port 587 (#0)
    * Trying 74.125.192.108... Connection timed out
    * Trying 74.125.192.109... Connection timed out
    * Trying 2607:f8b0:400d:c00::6c... Connection timed out
    * couldn't connect to host
    * Closing connection #0
    curl: (7) couldn't connect to host
    WARNING: Always run Incredible PBX behind a secure firewall.
    root@noreply:/usr/sbin $
     
  6. ajonate

    ajonate Member

    Joined:
    Jun 18, 2018
    Messages:
    68
    Likes Received:
    11
    Your email ports are blocked. You need to open a support ticket with your server host.
     
    Merlin likes this.
  7. Merlin

    Merlin Member

    Joined:
    Mar 10, 2017
    Messages:
    32
    Likes Received:
    1
    Thanks for the help. They opened the ports and now I'm receiving emails again.
     

Share This Page