利用者:Takuro

提供: VoIP-Info.jp
移動先: 案内検索

俺得な設定

とりあえず、Takuroの俺得設定を連ねる。 スクリプトはすべてGPLv3とします。

//思ったけどこれすっごいgdgd



Fax for Asterisk用シェルスクリプト

このサイトの、Fax2Mail.shだと意味不明な文章(uuencodeのせいだと思う)で面倒くさいし、とあるサイトで見つけたFax2Mail.plだとPostfixが嫌がるので、仕方なくこんなスクリプトをゴリゴリ書いた。

<?php
//Setting Value
$basedir='/var/spool/asterisk';
$faxin='faxin';
$faxpdf='faxpdf';
$mailfrom='hoge@example.com';
$mailto='fuga@example.com';
$header .= "Content-Type: multipart/mixed; boundary=\"__PHPRECIPE__\"\r\n";
$header .= "\r\n";

$body  = "--__PHPRECIPE__\r\n";
$body .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\r\n";
$body .= "\r\n";
$body .= $mailbody . "\r\n";
$body .= "--__PHPRECIPE__\r\n";

$data = fopen($pdfname, 'r');
$attachdata = fread($data, filesize($pdfname));
fclose($data);
$attach64 = base64_encode($attachdata);
$body .= "Content-Type: application/pdf; name=\"$filename\"\r\n";
$body .= "Content-Transfer-Encoding: base64\r\n";
$body .= "Content-Disposition: attachment; filename=\"$filename\"\r\n";
$body .= "\r\n";
$body .= chunk_split($attach64) . "\r\n";
$body .= "--__PHPRECIPE__--\r\n";
if (ini_get('safe_mode')) {
     $result = mb_send_mail($mailto, $mailsubject, $body, $header);
} else {
     $result = mb_send_mail($mailto, $mailsubject, $body, $header,'-f' . $mailreturn);
}
if($result){
    unlink($tiffname);
    unlink($pdfname);
    exit(0);
}else{
    exit(1);
}
?>

適当にFax2Mail.plのいいところとFax2Mail.shのいいところを掛けあわせてやった。

簡単にFaxoutを実行できやがるスクリプト

僕のGistに乗せてあるのでパクってきた

#!/bin/sh
file=faxout.tif
if [ -e $file ]; then
    echo "$file Found, Do Send fax."
    echo -n "Please input send fax number: "
    read faxnum
    if expr "$faxnum" : '[0-9]*' > /dev/null ; then
       echo 'OK' > /dev/null
    else
        echo "This is not number. Please try agein."
        exit 1
    fi
    while true; do
        echo -n "Send number is ${faxnum} is this correct? [y/N]: "
        read confirm
        case $confirm in
            y) echo "OK,It will Start within 3seconds."
               echo "Note: You need Administrator Password"
               sudo asterisk -rx "originate SIP/${faxnum}@brastel extension send@fax-tx" 
               if [ "$?" -eq 0 ]; then
                   echo 'Send Fax Was Successed.'
                   echo 'Now Removing faxout.tif'
                   rm -r faxout.tif
                   exit 0
               else
                   echo 'Send Fax Was Failed.'
                   echo 'Please check it'
                   exit 1
               fi
               break
               ;;
            *) echo "Aborting."
               exit 1
               break
               ;;
        esac
    done
else
    echo "$file not found."
    echo "If you have tif file, please rename faxout.tif"
    exit 1
fi

@brastelとかは勝手に書き換えてね。faxout.tifと同じディレクトリにおいて試してくだせえ。

お天気予報

177もどき。僕が書いているサイトでも載せてあるのでまんまぱくる。 jqとOpen J Talk、Meiが必要で、適宜書き換えてくだせえ。 extensions.confは載せてやる。お前のためだけに。

;Weather Service
exten => 177,1,Answer()
exten => 177,n,Playback(queue-callswaiting)
exten => 177,n,System(/usr/local/bin/weathertalk)
exten => 177,n,Playback(weather)
exten => 177,n,Hangup()

↑フレッシュなデータが聞けるぜぇ

#!/bin/sh
date +"%Y年%m月%d日 %I時%M分現在の天気予報をお伝えします。" | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -ow /tmp/announce.wav
wget 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010' -O- -q | jq -M -c '.description .text' | sed 's/\"//g' - | sed 's/\\n//g' - | sed 's/ //g' - | sed 's/寒気/かんき/g' - | sed 's/所々/ところどころ/g' - | sed 's/日中/にっちゅう/g' - | cut -c 1-804 | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -ow /tmp/weather1.wav>/dev/null 2>&1
WORD=`wget 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010' -O- -q | jq -M -c '.description .text' | sed 's/\"//g' - | sed 's/\\n//g' - | sed 's/ //g' - | sed 's/寒気/かんき/g' - | sed 's/所々/ところどころ/g' - |  sed 's/日中/にっちゅう/g' -| wc -c`
if `test $WORD -le 804` ; then
    echo 'Noting for Todo'>/dev/null 2>&1
else
    wget 'http://weather.livedoor.com/forecast/webservice/json/v1?city=130010' -O- -q | jq -M -c '.description .text' | sed 's/\"//g' - | sed 's/\\n//g' - | sed 's/ //g' - | sed 's/寒気/かんき/g' - | sed 's/所々/ところどころ/g' - | sed 's/日中/にっちゅう/g' - | cut -c 805-1600 | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -ow /tmp/weather2.wav>/dev/null 2>&1
fi
echo '以上、お伝えしました。ご利用ありがとうございました。' | open_jtalk -x /var/lib/mecab/dic/open-jtalk/naist-jdic -m /usr/share/hts-voice/mei/mei_normal.htsvoice -ow /tmp/end.wav>/dev/null 2>&1
if `test $WORD -le 804` ; then
    mv /tmp/weather1.wav /tmp/weather3.wav
else
    sox /tmp/weather1.wav /tmp/weather2.wav /tmp/weather3.wav
fi
sox /tmp/announce.wav /tmp/weather3.wav /tmp/weather4.wav
sox /tmp/weather4.wav /tmp/end.wav /tmp/weather5.wav
sox /var/lib/asterisk/sounds/ja/callup.wav /tmp/weather5.wav /tmp/weather6.wav
sox /tmp/weather6.wav -r 8000 /tmp/weather7.wav>/dev/null 2>&1
sox /tmp/weather7.wav /tmp/weather.ul>/dev/null 2>&1
sox /tmp/weather7.wav /tmp/weather.gsm>/dev/null 2>&1
mv /tmp/weather.gsm /var/lib/asterisk/sounds/ja/
mv /tmp/weather.ul /var/lib/asterisk/sounds/ja/weather.ulaw
rm /tmp/announce.wav /tmp/weather3.wav /tmp/weather4.wav /tmp/weather5.wav /tmp/weather6.wav /tmp/weather7.wav /tmp/end.wav
if `test $WORD -le 804` ; then
    echo 'Noting to do' >/dev/null 2>&1
else
    rm /tmp/weather1.wav /tmp/weather2.wav
fi

オートコールバック

これ食うと凍る(コレクトコール)。

掛けると一旦話し中でぶった切られるけど、5秒後にお電話がかけ直してきやがるやつ。 で、IVRで電話番号入れやがれと言われるので、繋ぎたい内線or外線をDTMFでダイヤルするといいって感じ。 extensions.confは仕方ねぇ、載せてやる。

exten => 108,1,System(nohup /var/lib/asterisk/collect.sh ${CALLERID(number)} &)
exten => 108,n,Busy
exten => collect,1,Set(CNT=1)
exten => collect,2,Ringing
exten => collect,3,Wait(1)
exten => collect,4,Answer
exten => collect,5,Wait(1)
exten => collect,6,Background(vm-enter-num-to-call)
exten => collect,7,WaitExten(5)
exten => collect,8,GotoIf($[${CNT} >= 3]?11:9)
exten => collect,9,Set(CNT=$[${CNT} + 1])
exten => collect,10,Goto(collect,6)
exten => collect,11,Playback(tt-monkeysintro)
exten => collect,12,Hangup

で、collect.sh

#!/bin/bash
sleep 5
FromNum=`echo -n $1 | wc -m`
typeset -i RET="1"
if [ "$1" = "201" ] ; then
    typeset -i RET="0"
fi
if [ "$1" = "202" ] ; then
    typeset -i RET="0"
fi
if [ "$1" = "203" ] ; then
    typeset -i RET="0"
fi
if [ "$1" = "0330000000" ] ; then
    typeset -i RET="0"
fi
if [ "$RET" = "1" ] ; then
    echo "NOT ACCEPTED NUMBER"
    exit 1
fi
if test $FromNum -le 4 ; then
    echo "Called to Inline"
    echo "Channel: SIP/${1}
CallerID: CollectCall <108>
MaxRetries: 1
RetryTime: 15
WaitTime: 30
Extension: collect
Priority: 1" > /var/spool/asterisk/outgoing/inline.txt
else
    echo "Called to Outline"
    echo "Channel: SIP/${1}@brastel
CallerID: CollectCall <05068630000>
MaxRetries: 1
RetryTime: 15
WaitTime: 30
Context: default
Extension: collect
Priority: 1" > /var/spool/asterisk/outgoing/outline.txt
fi

これでいいはずだぜ。

興味があったら随時追加していってやる。