概要
こんにちは。株式会社ネインというヒアラブルデバイスを開発している会社でアプリエンジニアをしているmiyataです。
まずはタイトルに書ききれなかったので「LINEWORKSと連携して音声メッセージのやりとりをする」とは一体どういうことかを説明します。
LINE WORKSのBotとGCPを使い、LINE WORKSのトークルームにイヤフォンで録音した音声と、その音声をGoogle音声認識したテキストを投稿するBotを作りました。
LINE WORKSで音声メッセージをテキストとメッセージを送ることができれば、トランシーバーのように利用することができ、チャットを利用しているデスクワーカーと、フィールドワーカーがシームレスにやり取りできる!と考えて機能を実装しました。
全体像
GCPサーバー
今回サーバーはGoogle Cloud Platformを使い、アプリとLINE WORKSサービスのブリッジ機能を開発しました。
User Managementサーバー
LINEでログインした情報を元にTokenサーバーで管理します。これにより、LINE WORKSログインでアプリからサービスを利用できます。
Botサーバー
録音した音声ファイルを受け取り、保存してURLを取得します。
その後その音声をGoogle Cloud Speechによりテキスト化します。
さらに、テキストと、URLをLINE WORKSのルームに投稿します。
LINEWORKS管理機能
現在、公式BOTとしては登録していないため、導入時に管理者がサーバーとやりとりするためのキーを使って都度BOTを登録する形にしています。(今後、もっと簡単にBOT導入できるようにする予定です。)
アプリ利用
今回、弊社の「Zeeny」アプリの追加サービスという形で実装しました。(※ 開発者用機能で、正式公開していません。)
主に以下の機能を実装してあります。
- LINE WORKSにログインして音声をアップロードする機能
- 届いた他の人が投稿したLINE WORKSの音声投稿を再生する機能
1. 音声アップロード
LINE WORKSログイン画面を用意してアクセストークンを取得する。
イヤフォンから音声録音を開始し、録音した音声データをアプリ内に保存。
音声データをサーバーにアップロード
2. 音声再生
LINE WORKSから届く通知に音声認識されたテキストと、音声データダウンロードURLを仕込む。
通知が来た際に、そのURLから音声データを取ってきて、イヤフォン経由で再生する。
動作
(※こんな感じでLINE WORKS上に投稿されます。ネイン代表の山本がテストしている画面キャプチャーです!)
苦労したところ
一度音声データをアップロードすることになるので、メッセージ送信から受信までのタイムロスが気になるところです。今後ストリーミングも併用するなどして、パフォーマンスを上げられたら、と考えています。
最初はLINE WORKSログインまで作り込んでいませんでしたが、実際に運用する際には利用者が簡単に利用できた方がいいだろう!ということで、Token管理を考えて設計し直したので、サービス利用設計を考える上でいい勉強になりました。
おわり
本格的に展開していく際には、Botの設定をあまり技術的に詳しくない各グループの管理者が行う必要があります。もっと簡単に登録できるようにしていきたです。
さらに、音声データなので、増えていくと肥大化してサーバー利用料金がかさんでいく問題があります。実際には一定期間経ったら消したり、現実的な運用や料金体系を探っていくことになると思います!
お読みいただきありがとうございました!