По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Наверняка кто-то из вас хоть раз в жизни получал SMS после звонка в определенную компанию. Обычно, это просьба оценить работу операторов. Так, например, это сделано у GSM операторов. Также это может быть SMS с благодарностью за обращение от компании или же об актуальных акциях и предложениях. Сегодня я хотел бы рассказать о том, как Вы можете реализовать подобную функцию с использованием FreePBX Статья написана по мотивам существующей на данном ресурсе публикации "Оценка оператора после звонка" У данного метода есть один недостаток - для его работы нужен chan_dongle и тариф с безлимитными SMS. Для тех, у кого нет пресловутого chan_dоngle, есть другой метод, который я постараюсь объяснить. Для особо нетерпеливых прошу Вас заглянуть в контакты, возможно, я уже там появился :) В данном методе мы не будем ломать диалплан FreePBX и использовать тяжелую артиллерию в виде MySQL. Итак, приступим. Для начала открываем конфигурационные файлы, а именно: /etc/asterisk/extensions_custom.conf Вносим в него такой кусочек диалплана. В коде я дал комментарии зачем нужны некоторые части: [send-sms] exten => _.,1,NoOp(Start sms) exten => _.,n,DIAL(SIP/${EXTEN},,trg) ;опция g позволяет "проваливаться вниз". ВНИМАНИЕ агент должен использовать вашу технологию (sip или pjsip) exten => _X.,n,GotoIf($[${DIALSTATUS}=BUSY]?busy:answered) //проверяем, был ли отвечен вызов, вот здесь мы или пропускаем клиента дальше если с ним уже говорили или нет. exten => _X.,n(busy),Hangup() exten => _X.,n(answered),Goto(sms,${EXTEN},1) [sms] exten => _X.,1,NoOp(Statrt SendSms) exten => _X.,n,Answer() same => n,Set(COUNT=1); установка счетчика. По идее, он тут не нужен, но сделан на всякий аварийный случай. Вдруг заклинит и клиента заспамит смс? :) same => n,Set(RECIVER=Имя донгла в системе); если используете донгл same => n,Set(RECIPIENT=${CALLERID(num)}) same => n,Set(TEXT="Спасибо что обратились в нашу компанию Рога и копыта"); текст смс same => n,GotoIf($["${RECIPIENT:0:2}" != "79"]?end); это проверка на принадлежность к мобильным номерам. Уточните формат входящих CALLERID(num) на вашей АТС - с 7 или 8? same => n,System(/usr/sbin/asterisk -rx 'dongle sms ${RECIVER} 7${RECIPIENT:1} ${TEXT}'); тут отправка с донгла. same => n,Set(COUNT=$[${COUNT} + 1]); увеличение счетчика (который не нужен, а вдруг) same => n,GotoIf($["${COUNT}" > "1"]?end); проверка и отправка на завершение exten => _X.,n(end),Goto(macro-hangupcall,s,1); Конец Обратите внимание на пометки в диалплане. В частности, Агент должен использовать вашу технологию подключения. Входящие форматы на ваши транки, 7 или 8. Если он еще не унифицирован, то рекомендую это сделать и привести в норму стандарта E164. Если входящие у вас содержат + то, вместо ${RECIPIENT:0:2} сделайте ${RECIPIENT:0:3} На этом, настройка конфигурационного файла extensions_custom.conf закончена. Теперь открываем файл queues_post_custom.conf и вставляем туда такую строку: member=Local/4015781@send-sms/n,0,4015781,hint:4015781@ext-local Где 4015781 номер существующего Агента в очереди. После этого, закрываем файл, перезагружаем диалплан командой dialplan reload и тестируем. Применять можно, например, для отправки благодарности клиенту с напоминанием времени работы или адреса компании. Чтобы не огорчить тех, кто не использует донглы или использует GoIP или другие Gsm шлюзы, на мой взгляд, есть более "красивый" метод: Идем в один из множества веб сервисов для SMS рассылок (названия писать не буду), регистрируемся у них и берем их готовые библиотеки для доступа к API. Я покажу на примере PHP API одной известной компании: #!/usr/bin/php -q <?php #парсим данные из AGI require(′phpagi.php′); $agi = new AGI(); $phone = $agi->request[′agi_arg_1′]; text = $agi->request[′agi_arg_2′]; $sender = ′INFORM′; // !!! Замените API-ключ на свой. $apikey = ′XXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZXXXXXXXXXXXXYYYYYYYYYYYYZZZZZZZZ′; $url = ′https://smspilot.ru/api.php′ ′?send=′.urlencode( $text ) .′&to=′.urlencode( $phone ) .′&from=′.$sender .′&apikey=′.$apikey .′&format=json′; $json = file_get_contents( $url ); echo $json.′′; $j = json_decode( $json ); if ( !isset($j->error)) { echo ′SMS успешно отправлена server_id=′.$j->send[0]->server_id; } else { trigger_error( $j->description_ru, E_USER_WARNING ); } Используем AGI. И в представленном диалплане меняем одну строку, а именно: same => n,System(/usr/sbin/asterisk -rx 'dongle sms ${RECIVER} ${TEXT}'); тут отправка с донгла. на: same => n,AGI(sendsms.php, 7${RECIPIENT:1}, "${TEXT}") И на этом - все. Чем данный способ лучше? Могу точно сказать, что в подобных сервисах для компаний есть возможность в качестве отправителя зарегистрировать название организации – это явно плюс в копилку лояльности клиента :) Это значит, что не нужен донг и SMS клиенту приходит не с безликих цифр, а от имени вашей компании в поле отправитель. Это, безусловно, повышает доверие и лояльность получателя SMS. Надеюсь, что данный метод будет полезен и найдёт применение в ваших бизнес-процессах. Удачи!
img
Привет, дорогой читатель! Если ты когда-нибудь задавался вопросом – как перенести файл с хостовой машины на виртуальную в Hyper-V, то эта статья для тебя! Дело в том, что не всегда представляется возможным организовать сетевую связность между хостом и виртуальной машиной, а иногда это и вовсе не нужно. К счастью, в Hyper-V предусмотрена простая возможность переноса файлов прямо на виртуальные машины (как Windows так и Linux и другие) с помощью PowerShell и сейчас мы про неё расскажем. Важно отметить, что данная функционал стал доступен только в 3 версии PowerShell. Поэтому проверьте установленную у себя версию. Для этого в консоли PowerShell введите команду $PSVersionTable Процесс Итак, сразу раскроем все карты. Для переноса файлов на гостевые (виртуальные) машины нужно использовать команду со следующим синтаксисом: Copy-VMFile -Name “Имя виртуальной машины” -SourcePath ?Путь кфайлукоторыйхотим перенести? -DestinationPath ?Путь кпапке на виртуальной машинекуда хотимположить файл? -CreateFullPath -FileSource Host Основой команды является часть Copy-VMFile, которая, в терминологии PowerShell, называется командлетом (Cmdlet) далее следуют ключи командлета, определяющие параметры и правила выполнения команды. Например, в примере выше, c помощью ключа -Name мы указываем имя виртуальной машины, на которую хотим скопировать файл, путь к которому указываем в ключе -SoucePath. Директория, в которую мы хотим поместить файл на виртуальной машине указывается в ключе -DestinationPath. Ключ -CreateFullPath создаст директорию, если её ещё нет. Ну и -FileSource Host означает, что источником, с которого мы переносим файл является хостовый сервер. Однако, если вы выполните команду на текущем этапе без предварительной подготовки виртуальной машины, то получите следующую ошибку: Чтобы этого избежать, необходимо предварительно включить в параметрах виртуальной машины поддержку гостевых сервисов (Guest Services). Для этого зайдите в параметры виртуальной машины, далее выберите Сервисы Интеграции (Integration Services) и поставьте галочку напротив Гостевые сервисы (Guest Services). Или просто введите команду Enable-VMIntegrationService -Name ?Guest Service Interface? -VMName “Имя виртуальной машины” После этого следует ввести команду Copy-VMFiles ещё раз, после чего начнётся копирование файлов с хоста в указанную директорию на виртуальной машине. Данный способ подходит для файлов любых размеров, ограничением является только используемое виртуальной машиной дисковое пространство.
img
В сегодняшней статье покажем пример настройки DMVPN – Dynamic Multipoint VPN, что является VPN решением компании Cisco. Данное решение используется, когда требуется высокая масштабируемость и легкость настройки при подключении филиалов к головному офису. DMPVN одно из самых масштабируемых и эффективных решений VPN поддерживаемых компанией Cisco. В основном оно используется при топологии Hub-and-Spoke, где вы хотели бы видеть прямые VPN туннели Spoke-to-Spoke в дополнение к обычным Spoke-to-Hub туннелям. Это означает, что филиалы смогут общаться с друг другом напрямую, без необходимости прохождение трафика через HQ. Как уже упоминали, эта технология является проприетарной технологией Cisco. Если вам необходимо подключить более десяти сайтов к головному офису, то DMPVN будет идеальным выбором. Кроме того, DMPVN поддерживает не только Hub-and-Spoke, но и Full-Mesh топологию, так как все сайты имеют между собой связность без необходимости настройки статических VPN туннелей между сайтами. Некоторые характеристики DMVPN Для начала перечислим важные характеристики данного способа организации Site-to-Site VPN для лучшего понимания: Центральный маршрутизатор (HUB) - данный роутер работает как DMVPN сервер, и Spoke маршрутизаторы работают как DMVPN клиенты; У данного маршрутизатора есть публичный статический IP-адрес на WAN интерфейсе; У Spoke маршрутизаторов на WAN интерфейсах может как статический, так и динамический публичный IP-адрес; У каждого филиала (Spoke) есть IPSEC туннель к головному офису (Hub); Spoke-to-Spoke - туннели устанавливаются при возникновении необходимости, когда есть движение трафика между филиалами. Таким образом, трафик может не ходить через головной офис, а использовать прямые туннели между филиалами; Все туннели используют Multipoint GRE c IPSEC; NHRP (Next Hop Resolution Protocol) - данный протокол используется для установления соответствий между приватными IP туннельных интерфейсов с публичными WAN адресами Описанные выше NHRP соответствия будут храниться на NHRP сервере, чем в нашем случае является HUB роутер. Каждый филиал устанавливает соединение с головным офисом и регистрирует свой публичный IP-адрес и его приватный IP-адрес тунеля; Когда филиалу необходимо отправить пакеты в подсеть другого филиала, он запрашивает NHRP сервер для получения информации о внешнем публичном адресе целевого филиала; Для лучшей масштабируемости советуем использовать один из протоколов динамический маршрутизации между всеми роутерами – например, EIGRP; Еще раз кратко о технологиях, которые использует DMVPN: Multipoint GRE; IPSEC; NHRP – Next Hop Resolution Protocol; Статическая или динамическая маршрутизация; Настройка маршрутизатора Конкретно в нашем примере у нас будет HUB маршрутизатор и два филиала. И, как было описано ранее, HUB – это DMVPN cервер, а филиалы – DMPVN клиенты. В нашем примере в качестве маршрутизатора используется CISCO1921/K9 Сначала настраиваем HUB маршрутизатор – ему необходимо присвоить статический IP – адрес на внешнем WAN-интерфейсе: ! Настраиваем интерфейсы interface GigabitEthernet0/0 description to Internet-WAN ip address 10.10.10.1 255.255.255.252 ! interface GigabitEthernet0/1 description to LAN ip address 192.168.160.1 255.255.255.0 duplex auto ! Настраиваем туннельный интерфейс, который является улучшенным GRE (Multipoint GRE) interface Tunnel1 description DMVPN Tunnel ip address 172.16.1.1 255.255.255.0 // выбираем приватную подсеть для туннелей no ip redirects ip nhrp authentication nhrp1234 // аутентификация между маршрутизаторами ip nhrp network-id 1 // сетевой идентификатор, который должен быть одинаковым на всех маршрутизаторах load-interval 30 keepalive 5 10 tunnel source GigabitEthernet0/0 // назначаем источником туннеля WAN интерфейс tunnel mode gre multipoint // определяем туннель как mGRE tunnel protection ipsec profile protect-gre // шифруем трафик в туннеле с помощью IPSEC ip mtu 1440 // уменьшаем MTU для того, чтобы разрешить оверхед на mGRE и IPSEC ip nhrp map multicast dynamic // разрешаем форвардить мультикаст трафик между туннелями. ! Настраиваем IPSEC на главном роутере crypto isakmp policy 1 encr 3des hash md5 authentication pre-share group 2 crypto isakmp key isakmp1234 address 0.0.0.0 0.0.0.0 // принимать соединения от любого источника при наличии динамических филиалов ! crypto ipsec transform-set TS esp-3des esp-md5-hmac mode tunnel ! ! crypto ipsec profile protect-gre // профиль добавленный к mGRE туннелю для шифрования set security-association lifetime seconds 86400 set transform-set TS ! Настраиваем статическую маршрутизацию на HUB маршрутизаторе ip route 192.168.164.0 255.255.255.0 172.16.1.2 // удаленные подсети доступны через IP удаленного туннеля ip route 192.168.161.0 255.255.255.0 172.16.1.3 // удаленные подсети доступны через IP удаленного туннеля Затем настраиваем маршрутизаторы в филиалах (Spoke роутеры) - у одного маршрутизатора статический айпишник на WAN интерфейсе, и у другого динамический, получаемый по DHCP. Первый маршрутизатор в филиале, с динамическим IP: interface GigabitEthernet0/0 description WAN to Internet ip address dhcp duplex auto speed auto interface GigabitEthernet0/1 description To LAN ip address 192.168.164.1 255.255.255.0 duplex auto speed auto interface Tunnel1 ip address 172.16.1.2 255.255.255.0 // помещаем в ту же подсеть что и другие туннели no ip redirects ip nhrp map multicast dynamic // разрешаем форвардить мультикаст трафик между туннелями tunnel source GigabitEthernet0/0 // “source”- WAN интерфейс tunnel mode gre multipoint tunnel protection ipsec profile protect-gre ip nhrp authentication nhrp1234 ip nhrp map 172.16.1.1 10.10.10.1 // соответствие HUB адреса туннеля с HUB адресом WAN ip nhrp network-id 1 ip nhrp nhs 172.16.1.1 // настройка NHRP ip nhrp registration no-unique // если NHRP процесс завершился (поиск соответствия) для определенного IP, то больше данный процесс не запустится ip nhrp map multicast 10.10.10.1 // Отправка milticast трафика только в Hub. Головной маршрутизатор будет получать весь мультикаст трафик (например, обновления протокола маршрутизации) и отправлять его всем Spoke маршрутизаторам ip mtu 1440 load-interval 30 keepalive 5 10 crypto isakmp policy 1 encr 3des hash md5 authentication pre-share group 2 crypto isakmp key isakmp1234 address 0.0.0.0 0.0.0.0 // Филиалы должны разрешать подклюения с любого адреса для формирования IPSEC VPN туннелей с другими филиалами ! ! crypto ipsec transform-set TS esp-3des esp-md5-hmac mode tunnel ! crypto ipsec profile protect-gre set security-association lifetime seconds 86400 set transform-set TS ip route 192.168.160.0 255.255.255.0 172.16.1.1 // Маршрут для HUB ip route 192.168.161.0 255.255.255.0 172.16.1.3 // Маршрут для другого филиала Spoke site Второй филиальный маршрутизатор, со статическим IP: interface GigabitEthernet0/0 description TO Internet ip address 10.10.10.9 255.255.255.252 duplex auto speed auto interface GigabitEthernet0/1 description To: LAN ip address 192.168.161.1 255.255.255.0 duplex auto speed auto interface Tunnel1 ip address 172.16.1.3 255.255.255.0 // должен быть в той же подсети что и другие туннели no ip redirects ip nhrp map multicast dynamic // разрешаем форвард мульткастов между туннелями. tunnel source GigabitEthernet0/0 tunnel mode gre multipoint tunnel protection ipsec profile protect-gre ip nhrp authentication nhrp1234 ip nhrp map 172.16.1.1 10.10.10.1 // мапируем адрес HUB тунеля к WAN адресу ip nhrp network-id 1 ip nhrp nhs 172.16.1.1 // настраиваем NHRP клиент с указанием адреса сервера ip nhrp registration no-unique ip nhrp map multicast 10.10.10.1 ip mtu 1440 load-interval 30 keepalive 5 10 crypto isakmp policy 1 encr 3des hash md5 authentication pre-share group 2 crypto isakmp key isakmp1234 address 0.0.0.0 0.0.0.0 ! crypto ipsec transform-set TS esp-3des esp-md5-hmac mode tunnel ! !crypto ipsec profile protect-gre set security-association lifetime seconds 86400 set transform-set TS ip route 192.168.160.0 255.255.255.0 172.16.1.1 // маршрут до головного маршрутизатор ip route 192.168.164.0 255.255.255.0 172.16.1.2 // маршрут до другого филиала Переходим к тестированию: show dmvpn // проверяем статус DMVPN и NHRP show crypto isakmp sa // проверяем IPSEC cвязность между маршрутизаторами ping 192.168.164.1 // пингуем для проверки ping 192.168.1.1 В нашем примере использовалась статическая маршрутизация, но при большом количестве филиалов необходимо использовать протоколы динамический маршрутизации для уменьшения ручного труда и риска ошибки.
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59