こんにちは! 株式会社Voicyでデータアナリストをしている翔斗です。
本日は「Voicyのパーソナリティが復帰してきた際にスラックで通知を入れるようにした」という話です。
背景
Slackを利用している多くの会社(もしくは個人)では、何かしら自動で通知されるよう設定してるところは多いと思います。 Voicyも類にたがわず、画像のようにいくつかの行動の際にSlackに通知を行っています。
放送を初めて公開した際・プレミアムリスナーを開始した際・リスナーがコメントした際etc
しかし、現在通知していた条件ではパーソナリティが開始した時は把握できるのですが、放送が減っていたり、久しぶりに復帰したりした時には目視でしか気付くことができない状態でした。
やりたいこと
Voicyに戻ってきてくれたPがいた際にその存在を社員に知らせる
Voicy にはパーソナリティサクセスというパーソナリティをサポートする部署があります。そこでは、パーソナリティが放送を始めたタイミングで「サポート終わり」という状態ではなく継続的にパーソナリティがどんな状態かを確認しています。 ただ、どうしても日々発信をしている人に目が行きがちで、やめてしまった人が戻ってきた事に気づかないことも多々あります。
そのため、一定周期離脱したパーソナリティが戻ってきてくれたことを通知で知らせようと考えました。また、日頃続けてくれているパーソナリティが急にやめた際などにも気づけるようにしました。
前提知識
今までの通知はアプリ上で行動があった際などに直接Slackへ送られるものでしたが、今回行いたいのは、複数条件(変更可能性があるもの)の通知になります。 そのため、BQで通知対象になるパーソナリティの情報を入れたテーブルを毎日作成し、BQ上で定期的にSlackへ通知するようにしました。
過去にこちらでも記載しましたが、Voicyのデータ分析基盤はBigqueryになっています。 収録・再生アプリの行動ログやWebのデータ他スプレッドシートなどもデータレイクとしてBigqueryに集約しています。
行ったこと
- テーブルの作成
- cloud functionの設定
- Pub/subの設定
- cloud schedulerの設定
- テーブルの定期実行
まずテーブルを作成します。
次にcloud functionを設定します。
トリガーをHTTPにしpython3.9で下記コードを入力します。(この時HTTPはcloudIAMの承認を必須にしてください)
from google.cloud import bigquery def main(request): client = bigquery.Client() table_id = "テーブル名" # 射影するクエリ文を作成 query = "クエリ" query_job = client.query(query=query) #スラック通知 slack = slackweb.Slack(url="通知を送りたいSlackのチャンネル") try: for df in query_job: message = "メッセージ内容" slack.notify(text=message) except Exception as e: print(e) pass return message
requirements.txtには下記を入力します。
bigquery slackweb
cloud functionの設定が終わったらPub/subの設定です。
配信タイプをpushにし、先ほど作成したHTTPをエンドポイントURLに入力します。
そして、外部から叩かれないように認証を有効にし、サービスアカウントを設定しサブスクリプションを作成します。
Pub/subの設定を済ませcloud schedulerを設定すればスラックへの通知は完了です。
今回は毎日9時に先ほど設定したpub/subを呼び出しています。
最後にテーブルの定期実行処理を済ませます。
そうすることで画像のように毎日9時過ぎに久しぶりに戻ってきてくれたパーソナリティが社員に知らされるようになりました。
感想
Voicyでは毎月何十人がチャンネルを開始しますが、全員が継続できるわけではありません。 声の発信が合わなかった人・忙しくてやめてしまう人・話すネタがなくなってしまった人、etc... さまざまな理由で放送が止まってしまう人がいます。今回Slackへの通知をして可視化したことで、想定以上に一度離脱しても戻ってきていることがわかりました。
戻ってきた人が可視化されたのをきっかけにパーソナリティサクセスと連携をとり、
なぜ戻って発信をしようと思ったのか?
どんなところが改善されると離脱せずに発信し続けられるのか?
など実際に戻ってきたパーソナリティに聞くこともでき、Voicyが良いプロダクトになるためのヒントがたくさん発見できたので今後の開発に活かしていこうと思います。