Небольшая заметка по реализации поиска телефона с помощью MajorDoMo и Умного Дома Яндекса (УДЯ).
Основная идея заключается - научить Яндекс колонку искать мобильный телефон.
Работоспособность проверена на RPI базовый образ 4_44.
Потребуется установка консольного клиента для Linux Linphonec (для систем на Win можно попробовать клиента MicroSIP с возможностью совершения вызовов из командной строки) и два SIP аккаунта.
Постараюсь описать пошагово и доступно.
В процессе баловства с SIP сервером и УД MajorDoMo возникла идея а что если умный дом научить находить телефон у меня достаточно часто бывает закинул где то телефон и потом ходишь просишь домочадцев позвонить на него. Сейчас надеюсь такой проблемы не будет.
Итак в первую очередь нам понадобится два SIP аккаунта, если у вас есть свой SIP сервер, то это не проблема. Если нет, то используем внешний. Я протестировал на провайдере Zadarma.com. Проще всего сделать две регистрации. Однако и при использовании одного аккаунта можно создать свою бесплатную АТС до 30 номеров (думаю для УД хватит с избытком).
После регистрации и последующей авторизации на сайте SIP провайдера, можно перейти в настройки Моя АТС и создать нужное количество номеров. Итак у вас имеется основной шестизначный номер формата ХХХХХ и несколько дополнительных YYYYYY-100, YYYYYY-101, YYYYYY-102 и т.д. Обратите внимание на адреса серверов, при использовании своей мини АТС они несколько отличаются от прямого номера.
Однако я использую свой сервер FreeSWITCH, поэтому примеры настройки могут немного отличаться, но принцип один и тот же.
Устанавливаем на малинку консольный SIP клиент Linphonec. Из пакетов версия несколько устаревшая и имеет проблемы с приемом входящих звонков. Но для поиска номера её достаточно.
В части установки эта заметка дублирует мою предидущую про создание голосового оповещения: [](В части установки эта заметка дублирует мою предидущую про создание голосового оповещения: Создание голосового оповещения MajorDoMo
Поэтому буду только необходимые действия без пояснений писать.
Установка клиента:
sudo apt-get install linphone-nogtk
даём следующую команду уже в самом клиенте:
register sip:xxxxxx@sip.zadarma.com sip.zadarma.com PASSWORD
смотрим статус:
status register
Выходим из клиента (при этом клиент сохраняет настройки в файл .linphonerc текущего пользователя
register sip:xxxxxx@sip.zadarma.com sip.zadarma.com PASSWORD
Для запуска и управления Linphonec в режиме демона, используется утилита Linphonecsh. Первоначально при запуске необходима инициализация клиента linphonecsh -init. При выполнении этой команды происходит запуск консольного клиента, без загрузки конфигурационного файла.
Чтобы при запуске выполнялось чтение конфигурации запустим с флагом с:
linphonecsh init -c /home/pi/.linphonerc
Прописываем следующую строку в crontab (при загрузке ПК, загружается консольный клиент:
crontab -e
@reboot sudo -u pi linphonecsh init -c /home/pi/.linphonerc
Итак большая часть сделана. Перейдём к настройкам Majordomo.
Создаем простое устройство, я обозвал его "Поиск телефона Вити" тип клавиша (запуск действия)
В методе pressed прописываем команду (пример)
exec ("sudo -u pi linphonecsh dial sip:1011@192.168.1.121");
1011 номер мой АТС, при использовании того же zadarma указываем его номер и адрес сервера АТС.
Сейчас у нас есть простое устройство, при нажатии иконки происходит звонок на указанный номер.
Настроим SIP клиента Android имеющегося уже по умолчанию в телефоне.
Перейдем в настройки смартфона.
В зависимости от телефона путь межет быть несколько другим, у меня:
Приложения - Системные приложения - Вызовы - Расширенные настройки - Прочие настройки
Настроек там немного: номер, адрес сервера и пароль.
Можно воспользоваться любым sip клиентом для Android, функционала гораздо побольше, мне понравилось приложение MizuDroid. Но для напоминалки достаточно и встроенного в ОС клиента.
Пробуем позвонить нажав иконку ПУ. На телефон идёт стандартный вызов.
Последнее действие. Связываем свой MajorDomo с УДЯ.
Для связи я использую сервис CONNECT.
Добовляем в приложении Яндекса новое устройство Умного Дома, навык Устройства - MajorDoMo .
И создаём простой сценарий:
Если я скажу "Где телефон Вити" то "Поиск телефона Вити" включится.
Пришлось немного побороться с Алисой, т.е. Колонкой Яндекс Мини. Из приложения и браузера команда выполняется без проблем, а вот колонка всё мудрила с семантикой. Некоторые словосочетания никак не хотела выполнять, например: Найди Телефон Вити, Поиск Витиного телефона и т.д. Остановился на фразе, которая заработала корректно: Где телефон Вити.
Ну и в конце небольшое дополнение. Для пользователей Windows можно попробовать использовать приложение MicroSip. С возможностью вызова из командной строки:
Command line
Call a number: microsip.exe number
Hang up all calls: microsip.exe /hangupall
Answer a call: microsip.exe /answer
Start minimized: microsip.exe /minimized
Exit: microsip.exe /exit
https://www.microsip.org/help
Минск, Беларусь
На форуме: udvnl