Google_Apps_ScriptによるWebhook処理

ページ名:Google_Apps_ScriptによるWebhook処理

目次

Habitica側

==== サードパーティツール: ==== HabiticaアカウントのWebhookを設定するサードパーティツールがあります。

  • Habitica Webhook Editor(未翻訳)
  • Habitica Api-Helper Tool(未翻訳)
Webhookカテゴリー

これらのツールを使用して、特定の事前定義されたアクションを通知するようにHabiticaを設定できます。

Webhookカテゴリーアクション
クエストアクティビティ
  • クエストが始まった
  • クエストが終わった
  • クエストに招待された
タスクアクティビティ
  • タスクが作成された
  • タスクが更新された
  • タスクが削除された
  • タスクがチェックされた
  • チェックリストのアイテムがチェックされた
ユーザーアクティビティ
  • ペットが孵化した
  • 乗騎が育った
  • レベルアップした
グループチャットが届いた
公式Habitica APIドキュメント

詳細情報は、公式のHabitica API-Documentation(英語)から提供されています。

Webhookによって転送されるデータの例

Webアプリに送信されるサンプルデータ: (doPost(e): var dataContents=e.postData.contents):

クエスト招待:

{"type":"questInvited","group":{"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","name":"My Habitica Party"},"quest":{"key":"dilatoryDistress2"},"webhookType":"questActivity","user":{"_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}}

クエスト完了:  

{"type":"questFinished","group":{"id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","name":"My Habitica Party"},"quest":{"key":"butterfly"},"webhookType":"questActivity","user":{"_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}}

タスクが作成された:

{"type":"created","task":{"challenge":{},"group":{"approval":{"required":false,"approved":false,"requested":false},"assignedUsers":[],"sharedCompletion":"singleCompletion"},"completed":false,"collapseChecklist":false,"type":"todo","notes":"","tags":[],"value":0,"priority":1,"attribute":"str","byHabitica":false,"text":"Add To Do","_id":"0ec3a680-3c8b-4e61-88f1-2848782226e9","reminders":[],"checklist":[],"createdAt":"2020-03-30T10:23:10.956Z","updatedAt":"2020-03-30T10:23:10.956Z","userId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","id":"0ec3a680-3c8b-4e61-88f1-2848782226e9"},"webhookType":"taskActivity","user":{"_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"}}

タスクがスコア付けされた:

{"type":"scored","direction":"up","delta":1,"task":{"challenge":{},"group":{"approval":{"required":false,"approved":false,"requested":false},"assignedUsers":[],"sharedCompletion":"singleCompletion"},"completed":true,"collapseChecklist":false,"type":"todo","notes":"","tags":[],"value":1,"priority":1,"attribute":"str","byHabitica":false,"checklist":[],"reminders":[],"createdAt":"2020-03-30T10:23:10.956Z","updatedAt":"2020-03-30T10:27:28.236Z","_id":"0ec3a680-3c8b-4e61-88f1-2848782226e9","text":"Add To Do","userId":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","dateCompleted":"2020-03-30T10:27:28.204Z","id":"0ec3a680-3c8b-4e61-88f1-2848782226e9"},"user":{"_tmp":{"quest":{"progressDelta":1.475,"collection":1},"drop":{"target":"Desert","canDrop":true,"value":1,"key":"Potatoe","type":"Food","dialog":"You've found a Potato!"}},"stats":{"buffs":{"str":0,"int":0,"per":0,"con":0,"stealth":0,"streaks":false,"snowball":false,"spookySparkles":false,"shinySeed":false,"seafoam":false},"training":{"int":0,"per":0,"str":0,"con":0},"hp":46.35717357116706,"mp":136.94362288135568,"exp":199218.27891340942,"gp":3319.1888075206516,"lvl":931,"class":"wizard","points":0,"str":0,"con":0,"int":100,"per":0,"toNextLevel":226140,"maxHealth":50,"maxMP":527},"_id":"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"},"webhookType":"taskActivity"}

「タスクを削除する」でWebアプリに投稿された完全なデータ:

(e.postData.contentsにバックスラッシュが含まれていることがわかります。vardataContents = JSON.parse(e.postData.contents)を使用してサブストリングを解析してください

{"parameter":{},"contextPath":"","contentLength":672,"queryString":"","parameters":{},"postData":{"type":"application/json","length":672,"contents":"{\"type\":\"deleted\",\"task\":{\"challenge\":{},\"group\":{\"approval\":{\"required\":false,\"approved\":false,\"requested\":false},\"assignedUsers\":[],\"sharedCompletion\":\"singleCompletion\"},\"completed\":false,\"collapseChecklist\":false,\"type\":\"todo\",\"notes\":\"\",\"tags\":[],\"value\":-33.71057310093657,\"priority\":1,\"attribute\":\"str\",\"byHabitica\":false,\"checklist\":[],\"reminders\":[],\"createdAt\":\"2020-02-09T10:46:46.723Z\",\"updatedAt\":\"2020-03-30T10:22:43.497Z\",\"_id\":\"dc5d0acd-e889-4c42-850f-9110aef8be33\",\"text\":\"test\",\"userId\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\",\"id\":\"dc5d0acd-e889-4c42-850f-9110aef8be33\"},\"webhookType\":\"taskActivity\",\"user\":{\"_id\":\"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\"}}","name":"postData"}}

Webhookが処理されるための要件は、Webhookを監視するサーバーです。したがって、Habitica-webhookをセットアップする前に、サーバー側をセットアップしてください。

サーバーサイド(バックエンド)

Google Apps Server Script (Web-App)

特定の事前定義されたwebhookアクションの1つが実行されると、Habiticaはリクエストをサーバーに送信し、サーバーがリクエストを処理します。このサーバーにはURL経由でアクセスできます。サーバーは、HabiticaからのPOSTリクエストを監視します。たとえば、Google AppsスクリプトでdoPost(e)は、次の例のような関数を使用してください。

Google Apps を使用して、サーバースクリプトをWebアプリとして展開することにより、このようなサーバーを設定できます。

https://developers.google.com/apps-script/guides/web

自動承認スクリプトの例

以下は、クエストへの招待を即座に自動承諾するサーバースクリプトの例です。

function doPost(e) { var habiticaUserId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; // your Habitica UserId var habiticaApiToken = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; // your Habitica API-Token (don't share, = password!) try { var dataContents = JSON.parse(e.postData.contents); var type = dataContents.type; } catch (err) {} if (type == 'questInvited') { var params = { "method": "post", "headers" : { "x-client": habiticaUserId + "-Webhook Script questInvited", "x-api-user": habiticaUserId, "x-api-key": habiticaApiToken } } var url = "https://habitica.com/api/v3/groups/party/quests/accept"; UrlFetchApp.fetch(url, params); } return HtmlService.createHtmlOutput();}

その他の例:(Googleシートにデータを表示する可能性を含む)

https://github.com/PitiTheGrey/google-script-Webhook-Server-for-Habitica

サーバースクリプトの処理

バージョンの保存、管理、およびサーバースクリプトのWebアプリとしての展開:

サーバースクリプト説明
スクリプトを保存する「バージョンの管理」を使用してスクリプトを保存します。コードの変更はすべて新しいバージョンとして保存されます。
「Webアプリ」としてデプロイ新しいバージョンはすべて「Webアプリ」としてデプロイする必要があります。スクリプトをWebアプリとしてデプロイすると、Server-Url(Habitica側のWebhookを設定するために必要)が配信されます。コードとバージョンを変更しても、指定されたURLは変更されません。変更を有効にするには、コード/バージョンが変更されるたびに、すべての新しいバージョンをWebアプリとしてデプロイする必要があります。
「ウェブアプリ」の設定スクリプトをWebアプリとしてデプロイすると、Habitica Webhookで次の設定が行われた場合にのみ機能します。

-「スクリプトを 'Yourself'として実行します。」(グーグルスクリプト上の「私」)

-「匿名であっても、全員にアクセスを許可する」

WebアプリのURLWebアプリをデプロイすると、GoogleはWebアプリのURLを表示します。これは、Habitica側のWebhookをセットアップするために必要なURLです。(Habitica側のWebhookは、サーバー側のスクリプトが新しいバージョンになっても変更する必要はありません!)

質問、トラブルシューティング

一般的な質問は、HabiticaのAspiring Comrades Guild(英語)で行うことができます。

Api-Helper-Toolまたは「PitiTheGrey」サンプルサーバースクリプトに関する特定の質問については、Habitican Wardrobes Guild(英語)で質問してください。

Piti! 2020年3月30日

翻訳アイコン.png注意:Google Apps ScriptによるWebhook処理は Habitica Wiki の翻訳版の一部です。

英語版のWebhook_processing_with_Google_Apps_Scriptの情報を正確に反映していることを保証しません。
翻訳に時間を要するため、最新の情報ではない場合があります。
このページは、未実装、未翻訳、すでにゲームには存在しないコンテンツにリンクしている可能性があります。
翻訳に参加したい場合は、Habitica 日本語訳ギルド へお越しください。



特に記載のない限り、コミュニティのコンテンツはCC BY-SAライセンスの下で利用可能です。

シェアボタン: このページをSNSに投稿するのに便利です。


最近更新されたページ

左メニュー

左メニューサンプル左メニューはヘッダーメニューの【編集】>【左メニューを編集する】をクリックすると編集できます。ご自由に編集してください。掲示板雑談・質問・相談掲示板更新履歴最近のコメントカウン...

魔道士

これは特集記事です!このページはWiki Wednesdayシリーズの一環で特集されました。Habiticaのスタッフは月に1回、生産性・健康・最適化などHabiticaの使い方についてヒントを載せた...

魔のウーパールーパー

魔のウーパールーパーHP500強さ1.5巻物魔のウーパールーパーは クエスト名と同じ名前のモンスターがボスのクエストです。 このボスを倒すとウーパールーパのクエストペットがアンロックされます。クエスト...

食器の惨事!

食器の惨事!コレクションクエストクエストの巻物画像食器の惨事!は日常の攻撃シリーズクエストの最初のクエストで、コレクションクエストです。完了するとクエストのオーナーにはクエストの続編でモンスター、「オ...

霜の鳥

フロストペンギンHP400強さ1.5巻物霜の鳥は 「フロストペンギン」という名のモンスターがボスのクエストです。 このボスを倒すとペンギンのクエストペットがアンロックされます。クエストの巻物は市場で4...

雷雄羊

雷雄羊HP300強さ1.5巻物雷雄羊は クエスト名と同じ名前のモンスターがボスのクエストです。 このボスを倒すと羊のクエストペットがアンロックされます。クエストの巻物は市場で4ジェムで購入可能です。雷...

難易度

難易度は習慣、日課、またはTo Doがあなたにとってどれだけ完了するのが難しいかを表します(例えば、家をペイントするのは歯磨きをするより困難です)。難易度のレベルはちょろい、かんたん、ふつう、むずかし...

集中宇宙の旅

キモソゾロイドHP1500強さ2.5巻物集中宇宙の旅はHabiticaのボスクエストです。このクエストをクリアすると太陽系の魔法のたまごがえしの薬が市場で購入できるようになります。太陽系のたまごがえし...

防御の薬

防御の薬‏‎すべてのタスクを初期値(黄色)に戻し、体力を全快します。購入額4 防御の薬‏‎は、チャレンジではないタスクの値をすべて初期値(黄色)に戻し、プレイヤーの体力を全快します。 本効果は即時に現...

銅頭鉄額の甲虫との戦い

銅頭鉄額の甲虫HP800強さ2巻物このクエストは「銅頭鉄額の甲虫」という名のモンスターがボスのクエストです。 このボスを倒すと銅の魔法のたまごがえしの薬がアンロックされます。クエストの巻物は市場で4ジ...

銀液を解き明かす

銀液を解き明かすコレクションクエストクエストの巻物画像銀液を解き明かすはHabiticaで2番目にリリースされた魔法の薬のクエストです。このクエストをクリアすると銀の魔法のたまごがえしの薬が市場で購入...

鉄の騎士

鉄の騎士HP1700強さ3.5巻物鉄の騎士は黄金騎士シリーズクエストの最終パートのボスクエストです。第2部の金の騎士を完了することでクエストオーナーはこのクエストの巻物を受け取れます。レベル40かそれ...

金の騎士

金の騎士HP1000強さ3巻物金の騎士 is the second part of the 黄金騎士シリーズの第2部の装備シリーズクエスト でボスは金の騎士です。クエストシリーズを完了すると究極の報酬...

連続実行

連続実行は日課を予定通り完了した回数や、カウンターのリセットまでの間に習慣を行った回数を記録しています。目次1 連続実行回数の増加と消失2 連続実行実績3 連続実行回数を調整する4 過去の連続実行回数...

転生のオーブ

これは特集記事です!このページはWiki Wednesdayシリーズの一環で特集されました。Habiticaのスタッフは月に1回、生産性・健康・最適化などHabiticaの使い方についてヒントを載せた...

貢献者へのごほうび

96c696a0-7f8f-11e2-9bf9-5e67f9e4ed85.gif Habiticaでは、メンバーからの貢献に感謝して、ごほうびを授与しています! このページでは獲得できるごほうびを紹介...

豊穣の妖精を探し出せ

豊穣の妖精を探し出せコレクションクエストクエストの巻物画像豊穣の妖精を探し出せはタスクの森の恐怖の装備シリーズクエストの第2部で、コレクションクエストです。ゴールドで購入できるクエストでクエストショッ...

謎のタイムトラベラー

謎のタイムトラベラー謎のタイムトラベラーは、三か月以上有料会員を継続し、神秘の砂時計を受け取ったプレイヤーが呼び出すことができます。目次1 有料会員の特典2 スチームパンクセット3 スチームパンクな背...

試練

これは特集記事です!このページはWiki Wednesdayシリーズの一環で特集されました。Habiticaのスタッフは月に1回、生産性・健康・最適化などHabiticaの使い方についてヒントを載せた...