По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
В этой статье посмотрим как можно отправлять электронные письма при помощи Python. Есть и более простые способы это сделать, но мне больше подошел именно следующий вариант. Итак, вот как это выглядит: у вас есть имена и адреса электронной почты некоторой группы контактов. И вы хотите отправить каждому из них письмо, добавив в начале сообщения «Уважаемый [имя]». Для простоты вы можете хранить всю контактную информацию просто в файле, а не в базе данных. Также вы можете сохранить в файл шаблон сообщения, которое вы хотите отправить. Модуль smtplib в Python – это практически все, что вам понадобиться для отправки простых электронных писем без заполнения темы письма или какой-либо еще дополнительной информации. Но, конечно, для настоящих писем вам необходимо заполнить строку темы письма и другую информацию, и, возможно, даже прикрепить изображения или какие-то другие вложения. Вот тут и приходит на помощь пакет email в Python. Имейте в виду, что нельзя отправить сообщение через электронную почту, используя только этот пакет. Вам необходимо совместить email и smtplib. Обязательно ознакомьтесь с подробной официальной документацией для каждого из этих пакетов. Вот четыре основных шага для отправки электронных писем с помощью Python: Настройте SMTP-сервер и войдите в свою учетную запись. Создайте объект сообщения MIMEMultipart и загрузите его с соответствующими заголовками для полей From (От), To (Кому) и Subject (Тема). Добавьте тело сообщения. Отправьте сообщение с помощью объекта SMTP-сервера. А теперь давайте рассмотрим весь процесс. Допустим, что у вас есть файл контактов mycontacts.txt, который выглядит вот так: user@computer ~ $ cat mycontacts.txt john johndoe@example.com katie katie2016@example.com Каждая строка соответствует одному контакту. В каждой строке пишется имя, а за ним следует адрес электронной почты. У меня все сохранено в нижнем регистре. Я оставлю преобразования любых полей или некоторых начальных букв в верхний регистр логике программирования, если это будет необходимо. В Python это все довольно просто. Далее у нас есть файл с шаблоном сообщения message.txt. user@computer ~ $ cat message.txt Dear ${PERSON_NAME}, This is a test message. Have a great weekend! Yours Truly Обратили внимание на ${PERSON_NAME}? Это шаблонная строка в Python. Шаблонные строки можно легко заменить другими строками; в данном примере ${PERSON_NAME} будет заменено настоящим именем человека (вы скоро это увидите). А теперь давайте перейдем к коду Python. Для начала нам необходимо прочитать контакты из файла mycontacts.txt. Мы, кстати, можем обобщить это в отдельную функцию. # Function to read the contacts from a given contact file and return a # list of names and email addresses def get_contacts(filename): names = [] emails = [] with open(filename, mode='r', encoding='utf-8') as contacts_file: for a_contact in contacts_file: names.append(a_contact.split()[0]) emails.append(a_contact.split()[1]) return names, emails Функция get_contacts() в качестве аргумента принимает имя файла. Она откроет этот файл, прочитает каждую строку (то есть каждый контакт), разделит их на имя и адрес электронной почты, а затем добавит их в два отдельных списка. И, наконец, в качестве результата работы функции возвращаются эти два списка. Также нам нужна функция для того, чтобы прочитать шаблон сообщения (такой как message.txt) и вернуть объект типа Template, созданный из его содержимого. from string import Template def read_template(filename): with open(filename, 'r', encoding='utf-8') as template_file: template_file_content = template_file.read() return Template(template_file_content) Как и предыдущая функция, в качестве аргумента она принимает имя файла. Для того, чтобы отправить письмо, вам необходимо использовать протокол SMTP (Simple Mail Transfer Protocol – протокол простого обмена электронной почтой). Как уже упоминалось ранее, у Python есть необходимые для этого библиотеки. # import the smtplib module. It should be included in Python by default import smtplib # set up the SMTP server s = smtplib.SMTP(host='your_host_address_here', port=your_port_here) s.starttls() s.login(MY_ADDRESS, PASSWORD) В приведенном выше фрагменте кода вы импортируете smtplib, а затем создаете экземпляр SMTP, который формирует SMTP-соединение. В качестве параметра он принимает адрес хоста и номер порта, оба эти параметра полностью зависят от настроек SMTP вашего поставщика услуг электронной почты. Например, в случае Outlook строка под номером 4 будет выглядеть вот так: s = smtplib.SMTP(host='smtp-mail.outlook.com', port=587) Для того, чтобы все работало, вам необходимо использовать адрес хоста и номер порта конкретно вашего поставщика услуг электронной почты. MY_ADDRESS и PASSWORD – это две переменные, которые содержат полный адрес электронной почты и пароль от учетной записи, которую вы собираетесь использовать. А теперь самое время получить контактную информацию и шаблон сообщения, используя функции, которые мы определили ранее. names, emails = get_contacts('mycontacts.txt') # read contacts message_template = read_template('message.txt') А теперь давайте отправим отдельное письмо каждому из этих контактов. # import necessary packages from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText # For each contact, send the email: for name, email in zip(names, emails): msg = MIMEMultipart() # create a message # add in the actual person name to the message template message = message_template.substitute(PERSON_NAME=name.title()) # setup the parameters of the message msg['From']=MY_ADDRESS msg['To']=email msg['Subject']="This is TEST" # add in the message body msg.attach(MIMEText(message, 'plain')) # send the message via the server set up earlier. s.send_message(msg) del msg Для каждого name (имя) и email (адрес электронной почты) (из файла с контактами) вы создаете объект MIMEMultipart, настраиваете заголовки типов содержимого From (от), To (кому), Subject (тема) как словарь ключевых слов, а затем прикрепляете тело сообщения к объекту MIMEMultipart в виде обычного текста. Возможно, вам захочется прочитать документацию, чтобы узнать больше о других типах MIME, с которыми вы также можете поэкспериментировать. Также обратите внимание, что в строке 10 выше я заменяю ${PERSON_NAME} фактическим именем, которое было извлечено из файла с контактами с помощью механизма шаблонизации в Python. В данном конкретном примере я каждый раз удаляю объект MIMEMultipart и создаю его заново при каждой итерации цикла. Как только вы проделаете все это, то сможете отправить сообщение, используя простую удобную функцию send_message() объекта SMTP, который вы создали ранее. А вот и полный код: import smtplib from string import Template from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText MY_ADDRESS = 'my_address@example.comm' PASSWORD = 'mypassword' def get_contacts(filename): """ Return two lists names, emails containing names and email addresses read from a file specified by filename. """ names = [] emails = [] with open(filename, mode='r', encoding='utf-8') as contacts_file: for a_contact in contacts_file: names.append(a_contact.split()[0]) emails.append(a_contact.split()[1]) return names, emails def read_template(filename): """ Returns a Template object comprising the contents of the file specified by filename. """ with open(filename, 'r', encoding='utf-8') as template_file: template_file_content = template_file.read() return Template(template_file_content) def main(): names, emails = get_contacts('mycontacts.txt') # read contacts message_template = read_template('message.txt') # set up the SMTP server s = smtplib.SMTP(host='your_host_address_here', port=your_port_here) s.starttls() s.login(MY_ADDRESS, PASSWORD) # For each contact, send the email: for name, email in zip(names, emails): msg = MIMEMultipart() # create a message # add in the actual person name to the message template message = message_template.substitute(PERSON_NAME=name.title()) # Prints out the message body for our sake print(message) # setup the parameters of the message msg['From']=MY_ADDRESS msg['To']=email msg['Subject']="This is TEST" # add in the message body msg.attach(MIMEText(message, 'plain')) # send the message via the server set up earlier. s.send_message(msg) del msg # Terminate the SMTP session and close the connection s.quit() if __name__ == '__main__': main()
img
Apache Cassandra — это программное обеспечение для управления базами данных NoSQL. Организации используют его для обработки больших объемов данных распределенным способом. Популярность этого программного обеспечения возросла благодаря высокой доступности и отказоустойчивости. Для этого Cassandra перешла от концепции главных или именованных узлов к симметричным распределенным узлам P2P. Каждый узел в кластере имеет одно или несколько пространств ключей, содержащих данные. В этом руководстве вы узнаете, что такое пространство ключей, его компоненты и как создавать, изменять и удалять пространства ключей. Что такое пространство ключей в Cassandra? Пространство ключей (Keyspace) — это контейнер данных в Cassandra, похожий на базу данных в системах управления реляционными базами данных (RDMBS). Кластер имеет одно пространство ключей для каждого приложения, столько, сколько необходимо, в зависимости от требований и использования системы. Пространства ключей — это совершенно отдельные объекты, и данные, которые они содержат, не связаны друг с другом. В кластере Cassandra пространство ключей — это самый внешний объект, который определяет, как данные реплицируются на узлах. Пространства ключей состоят из основных объектов, называемых семействами столбцов (которые похожи на таблицы в СУБД), строк, индексированных по ключам, типам данных, сведениям о центре обработки данных, коэффициенту репликации и стратегии пространства ключей. Компоненты пространства ключей Cassandra Есть некоторые важные компоненты пространства ключей, которые необходимо указать при создании пространства ключей. Эти компоненты: Стратегия репликации При определении пространства ключей стратегия репликации указывает узлы, на которых будут размещены реплики. Используя несколько узлов для размещения реплик, вы достигаете отказоустойчивости, высокой доступности и надежности. Возможны две стратегии: Простая стратегия. Используйте эту стратегию для сред тестирования и разработки, а также если вы не собираетесь развертывать кластер более чем в одном центре обработки данных. Коэффициент репликации применяется ко всему кластеру. Разделитель решает, где разместить первую реплику на узле. Затем другие реплики распределяются по часовой стрелке на следующих узлах независимо от центра обработки данных или местоположения. Стратегия сетевой топологии. Эта стратегия подходит, когда вам нужно развернуть свой кластер в нескольких центрах обработки данных. Однако вы можете использовать его даже с одним центром обработки данных, чтобы впоследствии расширить его. Стратегия сетевой топологии работает как для продакшена, так и для разработки. Она имеет тенденцию размещать реплики на узлах, которые не находятся в одной стойке, чтобы избежать проблем, когда одна стойка выходит из строя. С помощью этого параметра каждый центр обработки данных может иметь отдельный коэффициент репликации. Фактор репликации Этот параметр определяет, сколько реплик строки хранить на каждом узле. Минимум должно быть две реплики на центр обработки данных. Это означает, что сбой одного узла не влияет на работу группы репликации. Поэтому рекомендуется установить три копии каждой строки на разных узлах для достижения удовлетворительной отказоустойчивости. Эмпирическое правило заключается в том, чтобы коэффициент репликации оставался таким же, как и количество узлов. Базовый синтаксис пространства ключей Вы можете создать пространство ключей с различными настройками репликации. Ниже приведен основной синтаксис для создания пространства ключей: CREATE KEYSPACE keypsace_name WITH replication = {properties}; Свойства (properties) включают в себя различные параметры, такие как стратегия репликации, коэффициент или долговременная запись. Примечание. Команды CQL заканчиваются точкой с запятой (;). Если вы не используете точку с запятой в конце запроса, система будет ждать дополнительного ввода. Создать пространство ключей с помощью Cqlsh Чтобы создать пространство ключей, запустите оболочку CQL: cqlsh Затем, следуя базовому синтаксису, создайте пространство ключей с нужным именем и настройками репликации. В этом случае мы создадим test_keyspace с SimpleStrategy и replication_factor 3: CREATE KEYSPACE test_keyspace WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3}; Используйте приведенный выше пример, если вы не собираетесь расширяться до нескольких центров обработки данных. Кроме того, если у вас есть только один узел и вы используете Cassandra для тестирования, вы можете установить replication_factor равным 1. Для производственных сред и нескольких центров обработки данных создайте пространство ключей со стратегией репликации сетевой топологии. Для этого введите: CREATE KEYSPACE keyspace_network_topology WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3}; Имя центра обработки данных по умолчанию — datacenter1. Чтобы проверить имя вашего центра обработки данных, закройте оболочку CQL и используйте nodetool: nodetool status Если у вас несколько центров обработки данных, перечислите их все в запросе с соответствующими коэффициентами репликации. Например, запрос для двух центров обработки данных выглядит так: CREATE KEYSPACE keyspace_network_topology WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3, 'datacenter2' : 3}; Проверить ключевое пространство Поскольку в выводе нет ответа об успешном создании пространства ключей, используйте эту команду, чтобы убедиться, что пространство ключей находится в списке: DESCRIBE KEYSPACES; Система возвращает список всех доступных пространств ключей Cassandra. Мы выделили два пространства ключей, которые мы создали в приведенных выше примерах. Есть пара пространств ключей по умолчанию, которые поставляются с установкой Cassandra. Отключить устойчивую запись (Durable Writes) В Cassandra конфигурация durable_writes по умолчанию имеет значение true. Вы можете отключить его, но только для NetworkTopologyStrategy. Этот параметр сообщает Cassandra, следует ли ей использовать журнал фиксации для внесения обновлений в выбранное пространство ключей. Когда вы пытаетесь отключить durable_writes при создании пространства ключей с помощью SimpleStrategy, вы получаете предупреждение не делать этого. Причина в том, что вы можете потерять свои данные, если вы не синхронизировали данные из memtable в sstable, и ваш дата-центр выйдет из строя. Чтобы отключить durable_writes при создании пространства ключей, введите этот запрос: CREATE KEYSPACE keyspace_durwrites WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 3} AND DURABLE_WRITES = false; Проверка устойчивых операций записи Вы можете проверить запрос, который использовался при создании пространства ключей, описав пространство ключей. Также появляется часть durable_writes: DESCRIBE keyspace_durwrites Чтобы проверить настройки durable_writes для всех пространств ключей, запросите system_schema: SELECT * FROM system_schema.keyspaces; В выходных данных показаны все пространства ключей и их настройки, включая durable_writes. Использование пространства ключей Чтобы выбрать пространство ключей в Cassandra и выполнить над ним действия, используйте ключевое слово USE. Синтаксис: USE keyspace_name Например: USE keyspace_durwrites; Оболочка CQL переключается на указанное вами имя пространства ключей. Чтобы изменить текущее пространство ключей, используйте ту же команду с другим именем. Примечание. Всякий раз, когда вы создаете таблицу в Cassandra, вы начинаете с определения пространства ключей. Изменить ключевое пространство После создания пространства ключей вы можете изменить конфигурацию с помощью ключевого слова ALTER. Единственное, что вы не можете изменить, это имя пространства ключей. Помимо этого, вы можете изменить стратегию репликации, коэффициент репликации и устойчивые записи. Чтобы изменить пространство ключей, следуйте тому же синтаксису, что и при его создании, но используйте ALTER вместо CREATE. Измените значения, которые вы хотите. Например: ALTER KEYSPACE keyspace_durwrites WITH replication = {'class':'NetworkTopologyStrategy', 'datacenter1' : 2} AND DURABLE_WRITES = true; Чтобы убедиться, что изменения вступили в силу, используйте ключевое слово DESCRIBE: На изображении выше показана конфигурация пространства ключей до и после изменения. Удалить ключевое пространство Если вы отбросите ключевое пространство, оно будет удалено из системы. Ключевое слово DROP удаляет из пространства ключей все семейства столбцов, а также индексы и типы данных. Чтобы удалить пространство ключей в Cassandra, используйте этот синтаксис: DROP keyspace_name; Например: DROP keyspace_durwrites; Чтобы убедиться, что вы удалили пространство ключей, снова используйте запрос DESCRIBE. Итоги Выполнив шаги, описанные в этом руководстве, вы сможете успешно создать пространство ключей в Cassandra. Примеры в этом руководстве показали вам, как создать пространство ключей для разных сред и с разными настройками. Мы также показали вам, как изменить и удалить ключевое пространство, если вам нужно внести какие-либо изменения.
img
Привет всем! Многие читатели просили написать статью по настройке китайских GSM-шлюзов GoIP. Ну что же – это она :) Мы постараемся как можно подробнее описать процесс настройки GSM-шлюза GoIP 1 и соединим его с IP-АТС Asterisk с помощью графического интерфейса FreePBX 14. Если у вас останутся вопросы или возникнут проблемы с настройкой, то мы поможем их решить в комментариях к данной статье! Вся линейка оборудования GoIP различается в зависимости от количества SIM-карт, которые они поддерживают, а следовательно, и возможных GSM каналов. Есть модели GoIP 1/4/8/16 и 32. $dbName_ecom = "to-www_ecom"; $GoodID = "3574205354"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName_ecom) or die(mysql_error()); $query_ecom = "SELECT `model`, `itemimage1`, `price`, `discount`, `url`, `preview115`, `vendor`, `vendorCode` FROM `items` WHERE itemid = '$GoodID';"; $res_ecom=mysql_query($query_ecom) or die(mysql_error()); $row_ecom = mysql_fetch_array($res_ecom); echo 'Кстати, купить '.$row_ecom['vendor'].' '.$row_ecom['vendorCode'].' можно в нашем магазине Merion Shop по ссылке ниже. С настройкой поможем 🔧 Купить '.$row_ecom['model'].''.number_format(intval($row_ecom['price']) * (1 - (intval($row_ecom['discount'])) / 100), 0, ',', ' ').' ₽'; $dbName = "to-www_02"; mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение "); mysql_select_db($dbName) or die(mysql_error()); Пошаговое видео Немного теории GoIP 1, как и вся линейка оборудования GoIP – это межсетевой шлюз, который работает на стыке сетей IP и GSM. Сама аббревиатура GoIP означает GSM Over IP. Таким образом, любую сеть IP-телефонии можно связать с сетью подвижной сотовой связи - GSM и использовать её как выход на телефонную сеть общего пользования (ТфОП). Для того, чтобы GSM-шлюзом можно было пользоваться, в него нужно вставить простую SIM-карточку. Форм-фактор должен быть именно mini-SIM. Сейчас объясним совсем просто. У всех есть мобильный телефон. Чтобы с него можно было звонить и принимать вызовы, мы вставляем в него SIM-карту, которой присвоен номер. Встроенная антенна в нашем телефоне находит сотовую сеть и с помощью SIM-карточки идентифицируется в ней. Теперь мы можем звонить и принимать звонки на наш номер со всего мира. А теперь мы вытаскиваем SIM-карту из телефона и вставляем её в шлюз GoIP. Что поменялось? Да по сути - ничего. Шлюз также найдёт и также идентифицируется в сотовой сети. Останется только настроить его и “подружить” с нашей IP-АТС и мы сможем звонить c IP-телефона во внешний мир и принимать звонки от туда. Закрепим всё это схемой: Подготовка к настройке Для начала нужно вставить в шлюз SIM-карточку. На задней панели есть специальный слот, вставьте туда mini-SIM-карточку как показано на картинке ниже. Внимание! Прежде чем вставлять SIM-карты в шлюзы GoIP, слоты должны быть обесточены. Сделать это можно либо отключив питание шлюза, либо отключив питание соответствующего GSM модуля через веб - интерфейс Всё оборудование линейки GoIP настраивается с помощью встроенного графического интерфейса. Для того, чтобы в него попасть нужно подключить шлюз в сеть через один из Ethernet портов, расположенных на корпусе шлюза. Шлюз имеет 2 Ethernet порта: PC - порт может работать как в режиме моста, так и в режиме маршрутизатора. По умолчанию он находится в режиме маршрутизатора и ему присвоен адрес 192.168.8.1/24. Можно назначить на компьютере адрес из той же подсети, подключиться к шлюзу напрямую и получить доступ к веб интерфейсу по упомянутому адресу. В режиме моста шлюз можно подключить к локальной сети; LAN - порт для подключения к локальной сети. По умолчанию он получает адрес по DHCP и для того, чтобы выяснить какой адрес он получил, можно воспользоваться одним из следующих методов: Наберите номер SIM-карточки, которую вы вставили в шлюз. Как только будет ответ, наберите комбинацию *01. IP адрес, который получил шлюз, будет продиктован в трубку; Отправьте на номер SIM-карты SMS сообщение с текстом ###INFO###, в ответ шлюз пришлет адрес, который получил по DHCP. Если у вас есть доступ к DHCP серверу, вы можете узнать IP адрес шлюза через него; Как только вы узнали адрес шлюза, введите его в адресную строку Вашего браузера. Логин и пароль по умолчанию - admin/admin. Первая страница, которая переда нами откроется - это текущий статус шлюза. Если SIM-карта уже была вставлено, то мы увидим примерно следующее: Рассмотрим, что означают данные поля: CH/ Line - Номер канала и линии. У нас модель GoIP 1, поэтому мы видим статус только для одного поддерживаемого канала; M - Статус GSM модуля. Y - значит включён, N - выключен. Если нажать на Y - то данный модуль выключится, и перейдёт в статус N. Соответственно, чтобы включить его, нужно будет нажать N. Прежде чем вставлять или вытаскивать SIM-карту из рабочего шлюза, необходимо выключить GSM модуль; SIM - Статус наличия SIM-карты в слоте; GSM - Статус регистрации шлюза в сети GSM; VOIP - Статус регистрации в сети VoIP, то есть – регистрация на IP-АТС. Мы ещё не проводили никаких настроек, поэтому наш шлюз пока "не видит" IP-АТС; Status - Статус VoIP линии. Изменяется в зависимости от VoIP активностей, которые происходят на шлюзе. Может показывать активный звонок (CONNECTED), входящий звонок (INCOMMING), исходящий звонок через соответствующий GSM канал (DIALING) и другие. Статус IDLE означает, что на шлюзе нет текущих VoIP активностей на соответствующем GSM канале; SMS - Статус регистрации на сервере SMS; ACD(S)/ASR(%)/Duration(S)/Count - Показывают соответственно: среднюю продолжительность звонка, средний коэффициент успеха отвеченных вызовов, продолжительность вызова, текущее количество активных звонков и общее число; CDR Start- Время начала записей CRD; RSSI - Показатель уровня принимаемого сигнала; Carrier - Оператор сотовой связи. В нашем случае это МТС; BST ID - Идентификатор базовой станции; Idle - Время в минутах, прошедшее с момента последнего звонка; Remain - Возможное оставшееся время для совершения исходящих звонков; SMS Remain - Количество оставшихся SMS, которые можно отправить; Reset - Данная вкладка позволяет сбросить показатели полей, рассмотренных выше; Итак, прежде чем приступать к настройке, предлагаем обновить прошивку на нашем шлюзе до актуальной версии. Для этого открываем вкладку Tools → Online Upgrade. Выясняем текущую версию, а затем идём на сайт производителя - http://www.hybertone.com/en/news_detail.asp?newsid=21 и ищем более актуальную версию для своей модели (в нашем случае – GoIP 1): Копируем ссылку, для своей модели, вставляем её в строку Upgrade Site в интерфейсе нашего шлюза и жмём Start Внимание! В процессе обновления нельзя перезагружать или отключать питание шлюза! Дождитесь пока завершится процесс обновления, устройство перезагрузится автоматически. После перезагрузки, Вы увидите уведомление о том, что обновление прошло успешно и новую версию прошивки: Настройка на стороне GoIP Итак, прыгаем в Configurations → Preferences. Здесь меняем часовую зону и отключаем встроенный IVR. После завершения настроек на каждой вкладке интерфейса необходимо подтверждать изменения кнопкой Save Changes Далее переходим на вкладку Network и меняем настройки IP адресации на статические LAN Port → Static IP Теперь переходим на вкладку Basic VoIP и настраиваем подключение к серверу Asterisk. Endpoint Type оставляем как SIP Phone; Config Mode также не трогаем, оставляем Single Server Mode; В полях Authentication ID, Display Name и Phone Number обязательно нужно правильно указать название SIP-аккаунта, который мы потом заведём на FreePBX. Данные поля необходимы для успешной SIP регистрации. В нашем случае SIP-аккаунт называется goip-merion; В поле Password указываем пароль для доступа к транку. Точно такой же нам нужно будет ввести на при настройке на стороне FreePBX; Самый важный момент - SIP Registrar и SIP Proxy. Сюда вводим IP адрес нашего сервера Asterisk и порт, на котором он слушает Chan_SIP. По умолчанию, драйвер chan_sip работает на порту 5160; Проверить это можно через FreePBX в модуле Asterisk SIP Settings. Перейдите на вкладку Chan SIP Settings и проверьте поле Bind Port. Впишите тот порт, который там указан или же, измените его значение и впишите его на GoIP. Таким образом, если IP адрес Вашего Asterisk 192.168.12.34, то в поля SIP Registrar и SIP Proxy вводите 192.168.12.34:5160. Нажимаем Save Changes На вкладке Advanced VoIP есть важный момент. Обратите внимание на поле Signaling Port. Это порт, на котором шлюз слушает SIP, по умолчанию его значение 5060. При настройке транка на стороне FreePBX нужно будет это учесть. В поле Call OUT Auth Mode выберем опцию IP and Password, отметим опцию As Proxy и введём пароль. Такой же пароль потом будет необходимо ввести при настройке транка. Далее на очереди вкладка Media. На ней настроим интервал RTP портов как на Asterisk (10000-20000), а также приоритетность кодеков: Вкладку Call Out и Call Out Auth оставляем без изменений. На вкладке Call In меняем 2 параметра: CID Forward Mode - устанавливаем значение Use CID as SIP Caller ID для того, чтобы определялся номер звонящего; Forwarding to VoIP Number - вписываем сюда номер нашей IP-АТС, куда будут приходить входящие звонки. В нашем случае – это будет внутренний номер 175, который мы создадим на FreePBX; На этом, настройка на стороне шлюза GoIP закончена. Теперь переходим во FreePBX. Настройка на стороне FreePBX Прежде чем приступать к настройкам на стороне FreePBX, предлагаю внести IP-адрес шлюза в белый список fail2ban. В процессе регистрации от шлюза может прийти много неудачных попыток регистрации. Из-за этого он может быть просто заблокирован fail2ban’ом и Asterisk не сможет его даже пинговать. Чтобы этого избежать, рекомендую сделать следующее: Подключитесь к Asterisk через ssh и откройте для редактирования файл /etc/fail2ban/jail.local, например, с помощью vim: vim /etc/fail2ban/jail.local Найдите секцию [DEFAULT] и добавьте в опцию ignoreip адрес шлюза GoIP, который настроили ранее. Адреса можно добавлять через пробел в одну строку, можно также добавлять целые сети. На примере ниже, мы внесли адрес шлюза 192.168.12.34/24 Теперь мы готовы. Сначала настроим новый транк. Для этого открываем раздел Connectivity → Trunks → Add Trunk → Add SIP (chan_sip) Trunk. На вкладке General указываем название и вписываем номер, который присвоен SIM-карточке: Далее переходим на вкладку sip Settings → Outgoing. Указываем имя транка в Trunk Name и заполняем PEER Details следующим образом: Обратите внимание, что параметр port=5060, он должен совпадать с тем, что указан в Signaling Port на GoIP. Для удобства, приводим PEER Details ниже: host="IP Шлюза GoIP" port=5060 type=peer context=from-internal dtmfmode=rfc2833 disallow=all allow=alaw&ulaw insecure=very&port,invite qualify=yes defaultuser=goip-merion secret="Ваш Пароль" nat=no canreinvite=no Теперь переходим на вкладку sip Settings → Incoming. Указываем имя SIP-аккаунта USER Context, оно должно совпадать с Authentication ID, Display Name и Phone Number на GoIP. Затем заполняем USER Details следующим образом: type=friend host=dynamic secret="Ваш Пароль" context=from-trunk dtmfmode=rfc2833 canreinvite=no qualify=yes После выполненных настроек, рекомендую перезагрузить шлюз. После этого, в Asterisk Info у нас должно появиться что-то типа: Это значит, что регистрация шлюза прошла успешно. Обратите внимание, что мы уже создали внутренний номер 175. Если мы откроем статус GoIP, то также увидим там подтверждение того, что транк был успешно зарегистрирован: Нам осталось только создать исходящий маршрут и настроить отправку исходящих вызовов в транк к GoIP шлюзу: А также обозначить в нём правила набора: При этом, входящий маршрут нам не нужен, так как при настройке GoIP в разделе Call In → Forwarding to VoIP Number мы настроили приём всех входящих звонков на номер 175. На данном номере, мы зарегистрировали софтфон DrayTek, попробуем сделать исходящий вызов: Работает А теперь попробуем позвонить на номер SIM-карточки, которую мы вставили в шлюз: Вызов попадает на тот же DrayTek с номером 175. Номер звонящего определяется. На этом настройка шлюза GoIP 1 завершена. Надеюсь, что данная статья была Вам полезна. Пишите в комментарии, если столкнулись с проблемой!
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59