この記事は「Asana コミュニティ Advent Calendar 2024」22日目の記事です。
どーもばるすです。
今日はAsanaのお話です。
AsanaってAPIまじで豊富なんですよ。ドキュメントも比較的ちゃんとしてる。
Asanaみたいに操作/変更をゴリゴリにやるSaaSってAPI使いたくなるので、API提供が豊富な時点でもうね、好き。
今日はEvent APIについて思いの丈をぶちまけます。
SaaSのEvent APIはあるとないとで大違い
近年、SaaSは多くの企業で導入が進み、ビジネス全般で欠かせない存在となっていますね。
代表的なSaaSには顧客管理やプロジェクト管理、チャットツールなどがあり、これらはWebブラウザ上で操作されるため、ユーザーによるステータス変更やコメント入力などの更新操作が頻繁に行われています。
業務で頻繁に触るんだからそりゃ更新も頻繁になるわけです。
一方、更新のたびに何らかの自動処理や他システムとの連携が必要になるケースも多く見受けられます。
たとえば
「SaaS内のデータが更新されたら担当者に即通知したい」
「ユーザー操作をきっかけに在庫管理システムを同期させたい」
といったニーズです。
こうした“操作をトリガーにした自動化”を実現するうえで有効なのが、Event APIという仕組みです。
Event APIとは、SaaS内部で発生したイベント(更新・操作)を即座に外部へ通知するインターフェースのことです。
たとえばSlackはイベント用のAPIをしっかりと用意しており、ユーザーがメッセージを投稿したりチャンネルを追加・変更したりすると、ほぼリアルタイムで外部システムに通知が飛ばせます。
他の多くのSaaSはどうかというと、残念ながらまだEvent APIが整備されておらず、イベント情報をリアルタイムに取得するために定期的なポーリング(API問い合わせ)で代用せざるを得ないケースがほとんどです。残念。
ポーリングではタイミングのズレが生じやすく、またリソースの負荷も大きくなりがちです。悩ましい。
こうした課題を解決するにもEvent APIが必要だと、ばるすは考えます。
イベントの発生と同時に外部へ通知できるので、更新があったらすぐに自動処理や連携が走るため、作業の抜け漏れや無駄な待ち時間の削減に繋がりますね。
最近NotionさんもEvent Webhookに対応したんですよね。
この調子で世のSaaSが全部EventAPI実装してくれたら良いんですけどねー。
サンタさんにお願いしてみようかしら。
AsanaのEvent API(Webhook)の魅力
ではAsanaはどうかというと、端的に言えば神です。
Event API相当のAPIをしっかりと提供しており、タスクやコメントの変更などをリアルタイムで捕捉できます。
それがAsana Webhook APIです。そこはEvent APIちゃうんかい!って思いますよね。
Event API自体はありますけどそっちはイベントログ取得なのでポーリングでの取得になります。
特徴
- プッシュベースでの通知
多くのツールはポーリングによって定期的に更新を取得する必要がありますが、AsanaはWebhookの仕組みによって更新が発生したら即座に通知してくれるため、最新情報を常に把握しやすくなります。 - 豊富なイベント種類
タスクの作成・変更・削除はもちろん、プロジェクトへの追加やコメントの追加・変更など、プロジェクト管理に必要なイベントが網羅的にサポートされています。 - 他のSaaSに比べてしっかり用意されている
Slackのような例外を除けば、SaaSでEvent APIを提供しているサービスはまだ多くありません。そのため、「プロジェクト管理の自動化を拡張したい」「各種システムとシームレスに連携したい」というユーザーにとって、AsanaのEvent APIは大きなアドバンテージとなります。
Asana Webhook APIで何ができるのか
1. タスクのステータス変更をトリガーに自動通知
- 例: タスクの完了時にSlackへ通知、またはメールで担当者へレポートを送信。
- 効果: タイムリーな連絡によって更新漏れ・コミュニケーションロスを防止。
2. 外部システムと連携して二重入力をなくす
- 例: 営業の商談タスクがAsanaに作成されたら、Salesforceに自動でレコードを追加・更新。
- 効果: 営業チームと開発チームの間でステータスが常に同期され、手動入力の手間やミスが減る。
3. コメントをトリガーに作業を自動化
- 例: コメントに特定のワードが含まれていたらサブタスクを自動生成し、別担当者に割り当てる。
- 効果: 問い合わせの最適化や作業の振り分けを効率化し、対応漏れを防止。
4. リマインド・エスカレーションの自動化
- 例: 期限を過ぎても未対応のタスクがあれば、管理者やチームリーダーにアラートを送る。
- 効果: 期日管理や優先度調整が迅速化し、プロジェクトの遅れを早期に検知できる。
5. メンションの通知をSlackで受け取る
- 例: コメントでメンションされた際、SlackでDMやチャンネル通知を受け取り、コメント返信をSlack上で行う。
- 効果: コメント確認に画面切り替えが不要となり、コメントの確認漏れが減る。
Webhook API利用の基本的なステップ
使い方のざっくり解説です。
詳しくはAsana API リファレンスを確認ください。
API リファレンスは聖書。全てが書かれている。
簡単に使えるかというと…そうではないですね。こればっかりはしゃーない。
できることが多い = 設定は複雑になる なので。
- 受信サーバーの用意
- Webhookを利用するには、Asanaからの通知を受け取るエンドポイントを公開しておく必要があります。ローカル環境で開発中ならngrokなどを利用すると便利です。
- iPaaSでも代用可能です。
- これは別途記事を書く予定です。
- Webhook作成リクエスト(Establish)
POST https://app.asana.com/api/1.0/webhooks
に対して、opt_fields
(監視する項目や条件を設定する)resource
(監視したいタスクやプロジェクトのGID)target
(通知先のURL)
を指定し、リクエストを送ります。
- ハンドシェイク(X-Hook-Secret)の処理
- Asanaは指定した
target
へテスト用POSTを送り、レスポンスでX-Hook-Secret
を返すよう求めてきます。 - ここで同じ値を返却しなければ、Webhookは正常に作成されません。
- Asanaは指定した
- HMAC署名の検証(推奨)
- セキュリティ上、受信するイベントが本当にAsanaから送られたか確認するために、
X-Hook-Secret
を使った署名検証(HMAC)を実装するのが望ましいです。
- セキュリティ上、受信するイベントが本当にAsanaから送られたか確認するために、
- イベント受信と適切な処理
- 受信した情報(どのタスクがどう変わったか、など)をトリガーに、Slack通知や外部DB更新などの自動処理を行います。
- イベントデータがコンパクトにまとまっているため、必要に応じてAsana APIから追加の情報を取得すると便利です。
具体的な活用事例
Salesforceとの商談管理を連携
CNでは営業活動をAsanaで管理し、見込み客とやりとりした内容をすぐSalesforceに反映する仕組みをWebhookで構築しています。
更新漏れのリスクが大幅に減り、リアルタイムで商談ステータスを共有できるようになりました。
チケット対応のリードタイム管理
お客様からの問い合わせチケットのステータスが「未対応 → 対応中 → 完了」に変わるたびにWebhookが発火し、データベースに時刻を記録してBIに流してます。BIはまだ社内にお披露目してないけど。
これにより平均対応時間やクローズに至るリードタイムの集計ができています。
終わりに:AsanaAPIを活用して生産性を高めよう
Asanaはプロジェクト管理やタスク管理を行う上で、変更点をいち早く把握し、自動化や外部システム連携を行うためのEvent APIをしっかりと用意してくれています。神。
ステータス変更やコメント追加など頻度が高い操作をトリガーにイベントを受け取ることで、二重入力の削減や見落とし防止、迅速な連絡といったメリットが得られます。
加えて、弊社のようにSalesforceなど他のSaaSと連携させれば、プロセス全体の工数や進捗がより正確に管理できます。
AsanaのAPIを活用した自動化はさらに進化していくと考えられますし、伸びしろ半端ないです。やらない手はないぜ!!!
ではでは。