13-15 декабря 2019 года

На хакатоне "47 часов" МегаФон предлагает разработчикам реализовать прототип услуги "Аудиоконференция", а также проявить свой творческий потенциал в реализации любого приложения и/или интеграции на базе МегаФон.API.

По проекту "Аудиоконференция" имеется техническое задание, которое необходимо рассматривать как основу и которое ни в коем случае не ограничивает фантазию разработчика. Разработка должна завершится прототипом, который имеет шанс превратиться в коммерческое приложение. Доработка прототипа до коммерческого уровня будет оплачена МегаФоном в рамках не большого стартового бюджета. Дальнейшее сотрудничество с командой будет определяться по результатам этой деятельности.

На любую другую креативную идею и прототип, использующие МегаФон.API, также будем внимательно смотреть: наша задача - больше приложений хороших и разных.

Для работы по любому из проектов в рамках МегаФон.API разработчику необходимо использовать мобильный номер телефона МегаФон (в стадии бета-тестирования проект функционирует только для номеров Кавказского филиала). Тарификация вызовов происходит по текущему тарифному плану. Чтобы начать кодить для МегаФон.API необходимо проделать следующие действия:

  • Подписаться на группу МегаФон.API в Telegram. Там же можно задавать вопросы, общаться с коллегами, выкладывать предложения и замечания;
  • Взять одну из тестовых подписок, каждой из которых соответствует токен доступа. Все на одном лицевом счёте с деньгами - если не звонить в Антарктиду, то на эксперименты должно хватить с головой. Помните, что ваши коллеги звонят из того же лицевого счёта!

    Тут были тестовые подписки


  • Пара логин/пароль или токен используются для аутентификации в МегаФон.API (см. примеры). Необходимо помнить, что при написании приложения для браузера, использовать токен поверх веб-сокета не получается в силу особенностей реализации этого механизма в браузерах.
  • В качестве endpoint'а используется wss://testapi.megafon.ru/v1/api (см. примеры)
  • Читать спецификацию на megafonapi.github.io и кодить
Известные глюки, баги и багофичи:
  1. Тестовая платформа ограничена производительностью в 10 одновременных вызовов - не поспамишь всласть.
  2. Соединение платформы API с биллингом, очевидно необходимое для её нормальной работы, может иногда возвращать таймаут
                                        
                                        {'error': 
                                            {'code': -1, 
                                             'message': 'Initialization failed: Charging SubSystem returns [TIMEOUT]'
                                            }, 
                                         'jsonrpc': '2.0',
                                         'id': 5648330972441984664
                                        }
                                        
                                    
    и он пока не обёрнут в события МегаФон.API. Просто повторите callMake ещё раз;
  3. После окончания денег на балансе от биллинга прилетит [RELC] в структуре, аналогичной приведённой выше, которой также пока не обёрнут в события от МегаФон.API. Правда, на тестовых подписках должно хватать денег;
  4. Оба этих случая могут обрабатываться в обычной конструкции типа try/catch на выбранном языке программирования. В catch-блоке надо будет просто распарсить прилетающую JSON-структуру (см. JSON-RPC 2.0) и поступать так, как диктует ваш алгоритм. Например, на Питоне с использованием того инструментария, что описан в примерах это выглядело бы как-то так:
                                        
                                        try:
                                            response = await megafon.callMake(bnum=destination)
                                        except ProtocolError as e:
                                            print("Не могу установить связь с базовой инфраструктурой {0} {1}",\
                                            e.args[2]['error']['code'],\
                                            e.args[2]['error']['message'])
                                            
                                    
    Либо разбирайте JSON-структуры вручную, если вы используете свою инфраструктуру обработки JSON-RPC.