Comments 9
Зачем по сто раз в каждой статье писать как установить Астериск? Этой информации в интернете с головой, в том числе и на официальном wiki.
По DIALPLAN зачет, только макрос — это громозкое решение, которое вскоре будет depricated.
Если на то уж пошло то можно использовать GoSub, а еще лучше Lua. Там вообще все правильно можно сделать, без вот этих костылей с макросами. И работать это будет быстрее
По DIALPLAN зачет, только макрос — это громозкое решение, которое вскоре будет depricated.
Если на то уж пошло то можно использовать GoSub, а еще лучше Lua. Там вообще все правильно можно сделать, без вот этих костылей с макросами. И работать это будет быстрее
Ну а почему бы и не писать? Те, кто знают что к чему, просто пропустят эту информацию. Те, кто ищет описание решения от и до, скажут спасибо за развернутую информацию.
Касательно макросов вынужден согласиться, но решение легко адаптирвать под GoSub.
Касательно макросов вынужден согласиться, но решение легко адаптирвать под GoSub.
Более того, рекомендация по установке дана во вреднючем стиле:
Уже есть и пост по этой проблеме и мой комментарий с предложением вместо хотя бы указывать make собирать параллельно:
А костыль бережно переносится из руководство в руководство и конца этому не видно.
make && make install
Уже есть и пост по этой проблеме и мой комментарий с предложением вместо хотя бы указывать make собирать параллельно:
make -j [количество процессов]
А костыль бережно переносится из руководство в руководство и конца этому не видно.
Для целей определения мобильного оператора корректнее использовать базу перенесенных номеров MNP.
При исходящем звонке запрашивать и кэшировать оператора и даже регион, можно с сайта мегафона moscow.shop.megafon.ru/get_ajax_page.php?action=getMsisdnInfo&msisdn=79000000000 или с теле2 mnp.tele2.ru/gateway.php?9000000000
Если нужно список кодов мобильных операторов www.rossvyaz.ru/docs/MNC_25.11.2013-1.rtf
и список кодов регионов (он не совпадает с автомобильными) www.rossvyaz.ru/docs/Identifikator_regiona.doc
У меня как-то так получается /var/lib/asterisk/agi-bin/mnp:
и в extensions.ael
для простоты результаты кэшируем в бд самого астериска: первые 2 цифры — регион, вторые 2 цифры — код оператора
(ессно если нужно только определить регион абонента, то база rossvyaz работает намного лучше, надежнее, быстрее и тд)
При исходящем звонке запрашивать и кэшировать оператора и даже регион, можно с сайта мегафона moscow.shop.megafon.ru/get_ajax_page.php?action=getMsisdnInfo&msisdn=79000000000 или с теле2 mnp.tele2.ru/gateway.php?9000000000
Если нужно список кодов мобильных операторов www.rossvyaz.ru/docs/MNC_25.11.2013-1.rtf
и список кодов регионов (он не совпадает с автомобильными) www.rossvyaz.ru/docs/Identifikator_regiona.doc
У меня как-то так получается /var/lib/asterisk/agi-bin/mnp:
#!/bin/bash
declare -a array
while read -e ARG && [ "$ARG" ] ; do
array=(` echo $ARG | sed -e 's/://'`)
export ${array[0]}=${array[1]}
done
checkresults() {
while read line
do
case ${line:0:4} in
"200 " ) echo $line >&2
return;;
"510 " ) echo $line >&2
return;;
"520 " ) echo $line >&2
return;;
* ) echo $line >&2;; #keep on reading those Invlid command
#command syntax until "520 End ..."
esac
done
}
echo "DATABASE GET MNP $agi_extension"
read line
if [[ ${line:0:14} != "200 result=1 (" ]]; then
MNP=$(/usr/bin/wget -q "http://mnp.tele2.ru/gateway.php?${agi_extension:1}" -O - | /usr/local/bin/jq -r '.response.geocode.code+.response.mnc.code')
[[ -n $MNP ]] && echo DATABASE PUT MNP $agi_extension \"$MNP\" && checkresults
fi
exit 0;
и в extensions.ael
if (${DB_EXISTS(MNP/${EXTEN})} = 0)
{
AGI(mnp);
}
if ("${DB(MNP/${EXTEN}):2}" = "02" && ${DB(balance/multifon)} > 100)
{
if (${GROUP_COUNT(megafon)} < 5) {
GROUP()=megafon;
Dial(SIP/megafon/${EXTEN},90);
if (${DIALSTATUS} = BUSY) Busy();
};
}
для простоты результаты кэшируем в бд самого астериска: первые 2 цифры — регион, вторые 2 цифры — код оператора
(ессно если нужно только определить регион абонента, то база rossvyaz работает намного лучше, надежнее, быстрее и тд)
С учетом возможности перехода от оператора к оператору с сохранением номера в обозримом будущем может стать не актуальным.
На основе той же базы Россвязи есть модуль под node.js numcap для поиска региона и оператора по номеру телефона
github.com/antirek/numcap
github.com/antirek/numcap
Sign up to leave a comment.
Как легко и просто научить ваш Asterisk звонить через нужного оператора