
ep.ru - внедрение FreePBX
Администратор, 16.12.2019«ЭЛЕКТРО-ПРОФИ» – Группа Компаний, специализирующихся на поставке современного электрооборудования и материалов ведущих европейских и российских производителей, а также готовых решений в области защиты и коммутации в системах распределения электроэнергии и управления. Широкая гамма оборудования таких производителей, как: ABB, Weidmuller, Phoenix Contact, Wöhner, EATON, Pfannenberg, Hensel, Hummel, Провенто и др. для применения в различных инженерных системах.
Установка Asterisk и веб-интерфейса в виде FreePBX значительно облегчила работу системного администратора по управлению телефонии в компании.
- FreePBX Distro 14 был установлен клиентом самостоятельно
- Мы записали голосовое приветствие у наших партнеров ivrvoice.ru
- настроили связку c SIpnet и другим провайдером SIP телефонии.
- настроили переадресацию FollowMe для администраторов магазинов в регионах.
Одна из особенностей настройке, это запись звуковых файлов в гугл диск. Вы можете использовать наши наработки, если вам необходимо выгружать записи на внешнее хранилище Google, и затем удалять старые записи из жесткого диска самой АТС.
Мы решили воспользоваться мощным Python и набросать следующий скрипт:
В текущем примере, записи старше 50 дней удаляются с сервера АТС.
Приготовления делаем на тачке с иксами
1. Включить google drive api (big blue button)
https://developers.google.com/drive/api/v3/quickstart/python
In resulting dialog click DOWNLOAD CLIENT CONFIGURATION and save the file credentials.json to your working directory.
2. Установить Google Client библиотеки
pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
3. Получить токен
При первом запуске откроется окно браузера, где нужно будет авторизовать приложение
В результате в рабочей директории сохранится файл token.pickle, который нужно будет загрузить на тачку вместе со скриптом (при изменении скопов - всегда нужно перегенерировать токен)
4. выполняем скрипт ниже, в конце указываем кол-во дней, старше которых удаляем и грузим на гугл диск и путь до директории в переменных days, path соответственно
"""
from __future__ import print_function
import sys
import time
from apiclient.http import MediaFileUpload
import pickle
import os
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
# If modifying these scopes, delete the file token.pickle.
SCOPES = ['https://www.googleapis.com/auth/drive']
def main(days, path):
creds = None
# The file token.pickle stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('drive', 'v3', credentials=creds)
def remove(path):
"""
Remove the file or directory and upload to ggole drive
"""
if os.path.isdir(path):
try:
os.rmdir(path)
except OSError:
print("Unable to remove folder: %s" % path)
else:
try:
if os.path.exists(path):
file_metadata = {'name': path}
media = MediaFileUpload(path, mimetype='audio/mpeg')
file = service.files().create(body=file_metadata, media_body=media, fields='id').execute()
print('File ID: %s' % file.get('id'))
os.remove(path)
except OSError:
print("Unable to remove file: %s" % path)
def cleanup(number_of_days, path):
"""
Removes files from the passed in path that are older than or equal
to the number_of_days
"""
time_in_secs = time.time() - (number_of_days * 24 * 60 * 60)
for root, dirs, files in os.walk(path, topdown=False):
for file_ in files:
full_path = os.path.join(root, file_)
stat = os.stat(full_path)
if stat.st_mtime <= time_in_secs:
remove(full_path)
cleanup(days, path)
if __name__ == '__main__':
days, path = 50, '/var/spool/asterisk/monitor/'
main(days, path)
Установка Asterisk с АТС Дизайн - это решение всех ваших проблем с телефонией. Оставляйте заявки, и менеджер свяжется с вами.