Тут на МВидео выложили статью про 10 лучших приложений для записи звонков на смартфонах, а на 4pda выложили статью, что Гугл совсем запрещает запись звонков на Андроиде. Тема мне близка, т.к. недавно занимался разработкой приложения для записи звонков и все вышло не так как хотелось. Что и как - далее подробно.
* Цель статьи рассказать свой путь и принять обратную связь и ваши идеи, мысли, размышления.
Кто я? Что я? Я разработчик, занимаюсь разработкой сервиса виртуальной АТС для корпоративных клиентов. И, конечно, есть клиенты, у которых есть не только офисные работники, которым достаточно поставить стационарные SIP-телефоны или раздать в офисе/складе/магазине SIP-DECT-трубки.
В чем проблема?
Есть менеджеры "в полях". Которые весь день на объектах, в разъездах. И постоянно на созвоне. На созвоне с клиентами, партнерами, офисным бекендом. С точки зрения шефа эти менеджеры на мобильниках немного бесконтрольны. И хотелось бы знать с кем они разговаривают, как долго и о чем. Чисто хотя бы чтобы после разруливать конфликты проще было, кто что кому обещал или нет сделать. Обычно запись звонка, прослушанная обеими сторонами совместно, резко проясняет ситуацию. Хотя по разному бывает?
В общем, служебную запись звонков менеджеров в разъездах сделать не повредит.
Какие варианты решения? Разные операторы связи и виртуальных АТС предлагают и FMC, и SIP-клиент, более продвинутые - ВАТС сразу с симками.
Какой еще есть вариант?
И, конечно, можно использовать приложение для записи. Для корпоративных клиентов есть облачные сервисы. Вы ставите на смартфон приложение, которое записывает звонок и передает его в облако. Затем вы смотрите в веб-интерфейсе отчеты по звонкам и слушаете записанные звонки со всех смартфонов подключенных к сервису. Удобно? Вполне.
Решил воспользоваться таким сервисом. К сожалению, выбор указанных смартфонов на сайте был неактуален, часть моделей уже отсутствовала в продаже, на других были оговорки. Почему часть смартфонов записывает звонки, другая записывает, но только при определенных условиях, а третья вовсе не записывает?
Во-первых, Android и iPhone. Могу быть не точен, но iPhone не записывает звонки. Вероятно, так было изначально, ориентир на приватность-конфиденциальность-защиту. Видел заметку, что где-то просочились скрины каких-то бизнес-функций для Айфона и вот там есть запись звонков. Но правда или нет, достоверно не знаю, может быть кто-то в комментариях прояснит тему.
Для Андроида все немного проще. Андроид был 4, 5, 6, 7, 8, 9, 10 и вот сейчас 11-я версия платформы, 12 на подходе. Гугл с каждой версией платформы меняет свою политику, делая ее более "строгой". Т.е. многие приложения записи работали легко на 4,5,6 версиях, а вот позднее стали записывать только при определенных условиях, либо переставали записывать вовсе.
При каких условиях могли записывать? Например, выбор другого источника звука. Т.е. в Андроиде есть LINE, и есть MIC. Вроде с 7 версии Андроид использовать LINE уже не получится, т.к. будет только либо один канал (исходящий, т.е. ваша речь) либо тишина во время записи телефонного разговора. А если выставить MIC, то можно записать, что идет с микрофона и если ваш собеседник громко говорит, то микрофон уловит это с динамика или громкой связи и запишет. Прикольно, не так ли?
Почему свое приложение?
Вернемся к моей истории. Позвонив в поддержку сервиса и попросив предоставить хотя бы одну модель, купив которую я бы смог точно записать звонок. Но поддержка сервиса затруднилась ответить. И не подсказала мне какой смартфон купить.
Чтобы точно записывались звонки, то вооружившись Android Studio и Asus ZenPhone на Android 6, написали совместно с коллегой (мы ж программисты...) первый вариант своего приложения для записи звонков. Все работало отлично, но...
Но Android 6 уже устарел в 2019 году, кругом был Android 7, 8, набирал обороты Android 9. У клиентов, которым я дал потестировать приложение, был уже не тот Андроид что у меня. Тут стало понятно, что с LINE больше не запишешь. И почему не всякий смартфон порекомендуешь. Нюансов добавляет то, что даже рабочая модель смартфона может проапгрейдиться до следующего Андроида и потерять возможность записывать звонки. Т.е. доступные Android API станут нефункциональными.
Тут, пожалуйста, дальше читайте выразительно с придыханием: "это был жесткий облом!"
На самом деле были еще варианты.
Какие были требования к приложению для записи?
1. Собственно запись телефонного разговора.
2. Отслеживание событий звонка: начало, ответ, завершение.
3. Загрузка записанных звонков на сервер.
4. Понятный интерфейс.
Как видите, приложение не умело первый пункт - запись звонков. Ок.
С событиями в Андроид, конечно, тоже песня еще та. Их нет. Есть состояния. Во всех исходниках на гитхабе, которые работают с телефонией есть примерно один и тот же код, который переводит изменения состояния телефона в события. Т.е. например, телефон перешел из состояния покоя в состояние RINGING - значит в этот момент мы должны сделать все, что надо сделать на старт звонка. да это все обернуто в вашу функцию onStartCall ))
И еще прикол: вы не поймаете стандартным средством момент ответа на исходящий звонок, вопрос на Stackoverflow висит уже не первую пятилетку.
Ок, худо-бедно, второй пункт из требований программно сделать можно. Как собственно и 3.
Что все-таки делать с записью?
Кто-то скажет: "О, так можно же еще и рутовать устройства, там запись работает".
Да, возможно можно. Но очень хотелось бы, чтобы пользователь купил смартфон (возможно из какого-то рекомендованного списка), поставил приложение, сделал пару простых настроек, и вуаля! у него все работает: звонки записываются, передаются в CRM, отчеты строятся.
Все эти танцы с рутованием, версиями Андроидов, заменой номеронабирателя и т.д. хотелось бы оставить где-то сбоку. Хотелось чтобы для простого пользователя было все очень просто и понятно.
Так ведь есть же смартфоны со встроенной функцией записи?
Да, есть смартфоны, которые умеют записывать звонки штатной звонилкой, даже если у них Андроид 7, 8, 9 и 10. Это смартфоны брендов Oppo, Tecno, Realme. Т.е. штатная звонилка записывает разговор и складывает его в директорию.
У этих смартфонов свои оболочки - ColorOS, HiOS, Realme UI.
Для некоторых смартфонов Huawei и Honor можно использовать хаки с 4pda и также активировать функцию записи разговоров.
Сначала я не рассматривал такой вариант. Хотелось, чтобы одно приложение и звонки записывало, и передавало события по звонку и записи на сервер. Но если мы откажемся от одной функции, это же не значит, что мы совсем ничего делать не будем?
Поэтому можно использовать такой вариант: записывается звонок штатным средством, а события и загрузку записанных разговоров на удаленный сервер делаем нашим приложением.
При событиях звонка - можно делать разные полезные вещи - например, на входящий звонок получать инфо о звонящем клиенте. А после передачи записи ее можно прикрепить к клиенту в CRM, и распознать запись в текст, и какие-то еще полезные штуки.
Фиксация данных по звонку в CRM позволяет проанализировать работу менеджера: с кем разговаривал, когда и как долго, запись - о чем шел разговор. Конечно, приложение должно быть сервисом, который будет постоянно висеть и слушать события звонка. На некоторых оболочках происходит принудительная выгрузка из памяти резидентных сервисов, поэтому может понадобиться установить особое разрешение для приложения в режиме энергосбережения.
callagent
Результат всех моих изысканий и проб - в открытом доступе на гитхабе приложение callagent. Написано на Kotlin.
Здесь еще скриншоты: https://github.com/antirek/callagent/blob/main/screenshots.md
Что делает callagent?
При первом запуске необходимо настроить приложение: указать свой номер и адрес вашего сервера, куда со смартфона будут приходить события, данные по звонку и запись разговора.
Что такое события и данные по звонку?
Это данные в формате JSON. События (events) - это начало звонка, ответ, завершение звонка.
Данные по звонку (calldata) - это все данные по звонку: время начала, длительность, номер звонящего (формируется по завершению звонка).
Как работает приложение?
Приложение висит как сервис - вы всегда видите в трее иконку callagent, а в штроке уведомлений будет висесть оповещение о запущенном сервисе. При звонке приложение отслеживает события и отправляет данные каждого события (events) на сервер.
По завершению звонка приложение формирует данные по звонку (calldata) и также отправляет на сервер.
Затем находит в указанной директории запись звонка (запись делается штатными средствами прошивки) и тоже отправляет на сервер.
Что делать с этими данными?
В репо есть пример сервера. Т.е. вы можете получить данные на сервере и обработать как вам надо.
Ниже скрин моего тестового веб-интерфейса, где видны все полученные данные, а также результат последующей передачи данных в CRM.
callagent неприхотлив, немного места в трее занимает, не сильно памяти кушает. Несколько пользователей активно пользуется каждый день, их шеф собирает много данных и все анализирует.
И так что в итоге?
Т.е. получается, что мы можем записывать служебные разговоры у менеджеров и передавать их на сервер, если выдадим им определенные смартфоны, включим в штатной звонилке запись звонков и поставим callagent, чтобы он передавал записи на сервер. А на сервере с данными по звонкам и записями делаем все по потребностям бизнеса.
Репозиторий callagent
Репозиторий callagent: https://github.com/antirek/callagent
В репозитории исходники приложения в открытом доступе, вы можете скачать готовую apk или собрать свою apk-шку из исходников.
В репо есть также список смартфонов, которые точно записывают разговоры.
P.S. В общем, эта заметка - сбор моих немногочисленных знаний по этой теме, приобретенных в попытке разобраться с записью звонков и сделать свое приложение записи. Не сильно разбираюсь в Android API, возможно что-то можно было бы сделать иначе.
Надеюсь, кому-то будет интересно и полезно. Вопросы, идеи, мысли буду рад обсудить - или в комментариях, или в телеграм-группе https://t.me/callagent
Использую в быту запись разговоров сейчас по умолчанию. Т.е. записываются все звонки - звонят ли банки, родные, обзвонщики. Иногда очень удобно переслушать, что говорили, что сообщили.
Неудобно, что записи на мобильных идут в одноканальном режиме. Может быть на каких-то смартфонах можно и двухканальную запись включить? Двухканальную запись было бы удобно отправить в Яндекс на распознавание диалога и получение записанного диалога в тексте.
Презентация callagent на Asterconf 2021, посмотреть презентацию.
Ссылки на заметки, которые побудили переложить свой опыт на хабр:
МВидео: 10 приложений для записи звонков
4PDA: Google окончательно запрещает пользователям записывать звонки. Почему?
Комментарии (48)
KivApple
28.04.2022 11:45+5Интересно, какие мотивы приследует Google запрещая запись звонков, если во многих странах она легальна при согласии хотя бы одного участника диалога (например, владельца смартфона поставившего приложение), а ограничения могут быть только на использование записи (например, может быть нельзя выкладывать в публичный доступ без согласия второй стороны). Стран, где записывать совсем нельзя - меньшинство. Могли бы сделать региональный костыль, как, я слышал, в Южной Корее, беззвучный режим не отключает звук затвора камеры, хотя во всём остальном мире отключает.
ganzmavag
28.04.2022 11:57+6Я думаю тут перестраховка в плане безопасности. Чтобы избежать ситуаций, когда приложение висит в фоне и подслушивает. Хотя это можно было бы просто отдельным разрешением реализовать.
Но у меня больше вопрос к производителям. Почему BBK может на смартфонах своих брендов штатную запись сделать (у меня в Realme прекрасно работает, фича - можно включить только для незнакомых номеров автоматическое сохранение), а другие нет.
Интересно, кстати, у Самсунга, там запись разговоров есть в индонезийских и вьетнамских прошивках, а в российских нет, хотя закон у нас не запрещает.
Vitaly83vvp
28.04.2022 18:21+1Я думаю тут перестраховка в плане безопасности. Чтобы избежать ситуаций,
когда приложение висит в фоне и подслушивает. Хотя это можно было бы
просто отдельным разрешением реализовать.Ок, это понятно. Но могли бы оставить нормальный функционал в стандартной звонилке.
Enwony
30.04.2022 12:25Я как раз владелец самсунга, поставивший прошивку тайскую для записи разговоров.
Насколько я изучал и понял вопрос про легальность записи, у нас запись и распространение разрешается только если вторая сторона уведомлена, т.е в звонке должно прозвучать "ваш разговор может быть записан", а такой функции в самсунгах не реализовали + самунг не может быть уверен, будут ли распространятся эти записи, поэтому для россии отключили запись звонков
Gordon01
28.04.2022 12:03+4Тоже непонятно. На старом сайоми все разговоры записывались, это было очень удобно, несколько раз помогло разрулить спорные ситуации.
me21
28.04.2022 22:12На относительно новом тоже записывается. Xiaomi Note 8 Pro, Android 11.
burz_ex
29.04.2022 02:37Mi 10T, с Андроидом 11, из коробки имеет гугловую звонилку, где запись отключена для РФ.
Tarakanator
29.04.2022 14:191)не на всех версиях прошивки. В какой-то момент функции небыло. Правда я про 8t но не думаю, что отличается.
2)записывается... если руками тыкать начать запись в начале каждого разговора. Неудобно, особенно если гарнитурой пользуешься.
Popadanec
28.04.2022 23:07Мне кажется ему просто лень возится с региональными ограничениями. Чтобы пользователи их не обошли в США(некоторых штатах) и это не вызвало проблем уже у Гугла.
tbp2k5
29.04.2022 12:00IMHO В большинстве цивилизованных стран записывать можно после явного уведомления, а зачастую и явного согласия другой стороны. При этом «записывающая» сторона должна обеспечить безопасное хранения и использование в приделах того что было заявлено в запросе на согласие на запись. Опять-же, IMHO, в частном общение такое не практично и не реализуемо, а для профессионального использования есть другие решения не завязанные на телефон.
FDA847
28.04.2022 12:20+2Мы выкрутились через виртуальную АТС от Теле2. Давно используем их корпоративные тарифы, а в версии АТС 2.0 они реализовали и запись разговоров. Стоит это около 700 руб. в месяц + 50 руб. с каждого номера, на которой нужна запись. Но есть один недостаток - нет мобильного приложения для прослушивания записей, приходится лезть на сайт.
antirek Автор
28.04.2022 12:29+1А экспорта через API, например, у них нет? Можно было бы свое приложение сделать на каком-нибудь no-code конструкторе и там слушать.
E_BEREZIN
28.04.2022 12:21+2Используем ВАТС "Мегафон" с корп. SIM. Пишет все входящие и все исходящие звонки.
aMster1
28.04.2022 19:21+1А ваши сотрудники знают что их разговоры пишут?
Мне тут корпоративную симку подпихнули, и чего то теперь я задумался...
E_BEREZIN
28.04.2022 19:24+1Да, знают. В рабочее время сотрудники пользуются корп. сим и корп. почта. В нерабочее время могут пользоваться личными или корп. Корп. связь, включая мобильный интернет, оплачиваются компанией.
Megas
28.04.2022 13:01+1Самсунги вроде тоже имеют встроенную запись разговоров в странах где это разрешено.
ClearAirTurbulence
28.04.2022 13:39+2Но не в РФ. Одно время пользовался приложением CallRecorder от skvalex на SGS8, потом прилетело очередное обновление системы, и всё, finita la comedia. Шаманить и перепрошивать прошивки\какие-то там региональные csc или что там у них (уже забыл, давно рылся как-то на 4pda) некогда, при этом рисковать работоспособностью аппарата, особенно в наше время, как-то совсем не хочется.
А без записи очень неудобно по работе, часто не успеваешь руками записать что-то, раньше можно было вернуться и прослушать, сейчас - нет.
antirek Автор
28.04.2022 19:32Не знаю, может А-бренды все таки очень тесно трутся с Гугл, поэтому в своих прошивках стараются быть ближе к политике Гугла, а Б-брендам как бы далеко, и они в своих прошивках на каждом Андроиде поддерживают и запись. Поэтому Б-брендовый аппарат берешь и пишешь, без перепрошивок, рутования, с максимумом бытового удобства.
Tagat
28.04.2022 13:37+8Я считаю, что право записывать свои телефонные разговоры у пользователя должно быть всегда.
Использую приложение Call Recorder - SKVALEX. В Google Play лежит приложение с ограниченными возможностями записи из-за ограничений со стороны Google. На сайте разработчика полностью функциональное приложение.
Приложение имеет множество настроек, в том числе загрузку записей в облако, определение начала и конца разговора, настройки кодирования звука, выбор каналов для записи и многое другое. Разработчик подстраивал приложение под конкретные модели телефонов из-за всех особенностей производителей и региональных прошивок. Использую на POCO X3 Pro.namikiri
28.04.2022 14:12+2Поддерживаю право на запись своих разговоров у себя на устройстве. Тоже использую Poco X3 Pro, но не с родным MIUI, чтоб его, а с crDroid. Там в штатной звонилке есть возможность автоматически записывать звонки при установлении соединения, никаких надстроек устанавливать не нужно.
Popadanec
28.04.2022 20:28+2Смысла запрещать запись, сегодня нет никакого. Голос подделать так, что сам удивляться будешь, ничего не стоит. Даже видео можно при некоторых условиях подделать так, что только участник скажет(но ему никто не поверит) подделка это или нет.
Потому как я думаю только инерционность мышления и ещё большая инерционность гос аппаратов мешают отмене бесполезных и даже вредных законов.
Если запись хранится только локально под паролем/отпечатком, то какой от неё может быть вред? А если пароля отпечатка нет, то ССЗБ. Главное чтобы запись по умолчанию на новом устройстве была выключена и если включена, предупреждала определённым(лучше стандартным для всех) сигналом(но только не голосом предупреждать, это худшее из возможных решений.) и то что идёт запись, отображалось на экране(в идеале даже на том конце линии).
Полезных применений масса. От банального списка покупок, чтобы не перезванивать и не надиктовывать на диктофон, до того чтобы кого то ткнуть носом в его слова(но это не касается денег и т.п., т.к. легко подделать).savagebk
29.04.2022 08:16+1Мне удобно (было) в условиях цейтнота записывать важные разговоры, а потом их прослушать, когда нужно извлечь 100% информации, которая в спешке могла быть не полностью уловлена.
Popadanec
29.04.2022 10:05+3Причём такие ситуации бывают у каждого. Разговоры с гос сотрудниками, с юристами, банком, с партнёрами/контрагентами и т.п. и т.д.
Не всегда даже можно перезвонить, потому что звонок идёт с виртуальной АТС.
От того у меня дико подгорает, что ради непонятного меньшинства которые не хотят отвечать за свои слова, создают проблемы всем остальным.
ymishta
29.04.2022 21:00Смысла запрещать запись, сегодня нет никакого.
Осталось это немцам убедительно пояснить :) - у них отношение к записи чьего-то голоса как у аборигенов Папуа-Новой Гвинеи к фотографированию, типа душу крадет.
Popadanec
30.04.2022 09:53Сделать несколько роликов с аудио где канцлер себя неподобающе ведёт с подписью что видео/аудио сделано на компьютере, быстро изменят. Главное хорошо зашифроваться, а то реакция может быть очень резкой и неприятной.
vikarti
29.04.2022 10:55+1Для обычного пользователя — у ТиньковМобайл запись вообще на любом аппарате работает. Потому что на уровне сети. И расшифровка тоже будет. Слушать через приложение на том же договоре. Можно экспортировать.
Недостатки:- Насколько помню на старых ТП это платно.
- Таки это запись на уровне сети. Вопросы приватности.
- Бизнес-версии насколько понимаю нет как таковой.
isden
29.04.2022 12:12Таки это запись на уровне сети. Вопросы приватности.
Так вроде же сейчас все пишут и хранят сколько-то.
qw1
29.04.2022 12:19Есть риск взлома личного кабинета абонента и получения несанционированного доступа от его лица. Это всё же легче взломать, чем архив, полностью закрытый от абонентов.
isden
29.04.2022 12:23+1Если в ЛК можно выкачивать и удалять записи — то можно просто забирать то что нужно и удалять сразу.
qw1
29.04.2022 13:19И как быстро вам надоест после каждого разговора заходить в ЛК и чистить записи? И через год-два подключенной услуги вы так же будете подрываться чистить после каждого разговора?
BigD
29.04.2022 08:46В РФ нельзя записывать без согласия обоих участников ведь?
Alphacanalya
29.04.2022 10:34+1На сколько знаю достаточно просто предупредить об этом в начале разговора. Но это не точно.
qw1
29.04.2022 12:17+1В РФ нельзя записывать без согласия обоих участников ведь?
Можно, и даже нужно (по закону Яровой). Единственное ограничение — закон о тайне связи разрешает передавать собранную информацию только участникам диалога и другим лицам, уполномоченным законом.На сколько знаю достаточно просто предупредить об этом в начале разговора. Но это не точно.
Совершенно не точно. Потому что все звонки с кол-центров пишутся, но никто нас предупреждать не спешит.
Muhammadyusuf
29.04.2022 12:20+1Я как раз занимаюсь разработкой такой программы для одной компании. Я не смог сделать запись звонков. Но остальное ок. Использовал CallScreenAPI (жаль работает только на анроид 9+) и PostCall API (Android 10+). Но примущество есть- стабильность. Спасибо за статью. Будет что поизучать
Daddy_Cool
01.05.2022 00:58Мне как-то позвонила "служба-безопасности-сбербанка", рядом со мной оказался аспирант который смог быстро включить запись у себя, т.е. я записывал диалог другим телефоном. (Я старался подоьше подержать жулика и развлекался как мог). Потом разослал знакомым в качестве примера как это бывает. С кнопочкой "записать разговор" было бы проще.
titbit
Сейчас уже актуально писать звонки не только с самого телефона, но и с кучи мессенджеров. Интересно как с этим обстоят дела в андроиде?
yerbabuena
"Х", но не подумайте что хорошо. Без рута после 7 андроида делать нечего от слова совсем.
Tarakanator
Почему после 7? на 9м-же запретили запись сторонним программам.
aborouhin
Катастрофически плохо. Cube ACR у меня на разных телефонах и версиях Андроида с записью обычных звонков всегда справлялся, а вот с мессенджерами - глухо (ну только в том самом режиме, когда что-то слышно исключительно если по громкой связи говорить). Из-за чего я эту затею и несколько подзабросил, т.к. по факту 90% разговоров через WhatsApp/Telegram.