По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие
наши статьи:
Всем привет! В этой статье мы расскажем о том, что такое Device Pool в Cisco Unified Communications Manager (CUCM) и как его настроить.
Device Pool можно представить как набор конфигураций и шаблонов, который применяется к группе устройств. Их можно создавать сколько угодно и использовать для разных локаций или функций абонентов (например, отдельные Device Pool’ы для центрально офиса и филиалов в другом городе). Но прежде чем создавать Device Pool необходимо настроить несколько разделов, которые будут использоваться в Device Pool’е
Cisco Unified CM Group
Эта группа определяет, на каких серверах и в каком порядке должна происходить регистрация телефона. Первый в списке сервер является основным, остальные являются дополнительными и телефоны регистрируются на них, если у них не получилось зарегистрироваться на основном. Для добавления Cisco Unified CM группы нужно перейти во вкладку System → Cisco Unified CM Group и нажать Add New. В появившемся меню в поле Name указываем название группы, а ниже в поле Selected Cisco Unified Communications Managers добавляем наши серверы в желаемом порядке (доступные серверы находятся в поле Available Cisco Unified Communications Managers). Изменить приоритет можно кнопкой со стрелкой.
Region
Разделение на регионы нужно для определения пропускной способности аудио и видео звонков внутри и между регионами. Аудио кодек определяет тип сжатия и максимум использования полосы пропускания, которая используется при звонке. Для создания региона нужно перейти во вкладку System → Region и нажимаем на кнопку Add New Region. Далее указываем имя региона и попадаем на страницу настроек. В поле Regions выбираем, с каким регионом мы хотим настроить связь (если хотим применить настройки внутри региона то выбиваем в этом поле его самого), из выпадающего списка Audio Codec выбираем желаемый кодек, в поле Video Call Bandwidth указываем пропускную способность для видеозвонков и далее выбираем Link-Loss Type на случай потерь. После чего нажимаем Save и настройки пропускной способности между регионами переносятся в верхнюю часть в поле Region Relationships.
Date/Time Group
Использование Date/Time групп нужно для определения временных зон аппаратов, подключенных к CUCM. При установке CUCM автоматически создается группа CMLocal, дата и время которой синхронизированы с ОС системы, на которой установлен CUCM. Для создания новой группы переходим во вкладку System → Date/Time Group и нажимаем Add New Date/Time Group. В новом окне указываем ее название в поле Group Name, в поле Time Zone выбираем временную зону, разделитель выбираем в поле Separator, форматы даты и времени выбираем в полях Date Format и Time Format.
Создание Device Pool
Переходим во вкладку System → Device Pool и нажимаем Add New. Тут четыре поля обязательны к заполнению. Первое это название Device Pool’а, а остальные ты мы настроили ранее - это Cisco Unified Communications Manager Group, Region и Date/Time Format. Остальные поля можно заполнить, выбрав пункт по умолчанию. После заполнения всех полей нажимаем Save и сохраняем наш Device Pool. Теперь его можно применить в настройках уже созданного телефона, либо выбирать его при создании нового.
В статье покажем, как установить последний на момент написания статьи stable релиз SNG7-PBX-64bit-1910. Установка произведем в среде виртуализации VMware. Погнали!
Скачать последний стабильный релиз FreePBX Distro можно по этой ссылке: https://www.freepbx.org/downloads/
Системные требования к виртуальной машине
Первое, что нужно сделать – создать виртуальную машину, в которой мы развернем IP – АТС Asterisk с помощью FreePBX Distro. Тут нужно воспользоваться нашим калькулятором IP – АТС Asterisk – он доступен по ссылке ниже. Калькулятор подскажет полные требования к серверу согласно ваших входных данных. Переходите по ссылке и возвращайтесь уже с системными требованиями :)
Калькулятор Asterisk
Установка
После того, как виртуальная машина создана, к ней необходимо подцепить .iso, загрузить с него виртуальную машину и следовать нашим инструкциям. Откройте KVM окно (окно управления машиной)
Мы установим FreePBX 15 версии, Linux версии 7.6 и сам Asterisk 16 версии. Поэтому, в первом окне выбираем FreePBX 15 Installation (Asterisk 16) - Recommended и нажимаем Enter:
Далее нужно выбрать, где мы будем получать информацию об установке. Мы выбираем «как бы» на монитор (VGA), но на самом деле, это окно KVM виртуальной машины. Выбирайте опцию Graphical Installation – Output to VGA и нажимаем Enter:
На следующем экране нужно выбрать FreePBX Standard и нажать Enter:
Запускается инсталлятор:
Установим root - пароль. Для этого переходим в соответствующий пункт меню:
И указываем дважды требуемый пароль:
И ждем. Пока на прогрессбаре (индикаторе состояния установки) вы не увидите заветные Complete!:
Дальнейшая настройка
А чтобы настроить установленный и свежий дистрибутив воспользуйтесь статьей по ссылке ниже. Enjoy :)
Настройка FreePBX с нуля
В этой статье посмотрим как можно отправлять электронные письма при помощи 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()