chatworkにzapierでgitlabから通知する

やってみたので備忘録を。

[こちら](https://dev.classmethod.jp/tool/git/random-assigned-gitlab-code-review-request-with-chatwork-task-notification/)を参考にさせていただいて大体同じようにしてみた次第。

####**・事前に**
gitlab.com(SaaSのやつ)じゃなくて自前だとgitlabにzapierをアプリケーション登録する必要がある模様（へー）
https://zapier.com/help/gitlab/

![zapier-gitlab-app-regist.png](https://qiita-image-store.s3.amazonaws.com/0/25031/7733eefe-c809-abda-658c-c071f7e7478b.png)
上のはgitlab10.6の画面です。

####**・Trrigerをつくる**

トリガを選択→とりあえずNew Commitをえらびました

Gitlabを選択してアプリケーション登録時に取得したIDとSecretを使って接続テストします
うまくいったらSaveで続ける

ProjectとBranchかTagを選択してつづける
今回はvol-testのrefactorブランチを選択しました

サンプルデータをえらんでおいてつづけます


####**・Actionをつくる**

</>このコード入力するマークを選んでRunPythonを選択します

テンプレートのInputDataに以下を入力
id: サンプルデータのコミットIDが勝手にでてくるのでそれを選択
auther: サンプルデータのコミットしたユーザが勝手にでてくるのでそれを選択

Codeに以下を入力

```python
import requests
import random
import json
from datetime import datetime, date, timedelta
 
# Get input_data
name = input_data['author']
mr_id = input_data['id']
 
# ChatWork ids
reviewer = [557xxx, 556xxx, 1128xxx]
 
# API Key
APIKEY = '81e0xxxxxxxxxxxxxxx3fbdf'
 
# ChatWork Room ID
ROOMID = '287xxxxx'
 
# API Call URL
URL = 'https://api.chatwork.com/v2'
url = '{0}/rooms/{1}/tasks'.format(URL, ROOMID)
 
# Elected 3 reviewer of random
ids = random.sample(reviewer,3)
to_ids = ','.join(map(str, ids))
 
# Review URL
mr_url = 'https://my-gitlab-server-addr/name-space/pj-name/commit/' + mr_id + ''
 
# Deadline of the task is 3 days later
limit = datetime.today() + timedelta(days=3)
 
# HTTP Request Body & Params & Headers
body = name + ' さんがコミットしたので確認してみてください(F)\n' + mr_url
params = { 'body': body, 'limit': int(limit.strftime('%s')), 'to_ids': to_ids }
headers = { 'X-ChatWorkToken': APIKEY }
 
# Run API Call
resp = requests.post(url,headers=headers,params=params)
```
ランダムとか別にいらないのですがまあターゲットのアカウントIDが3人しかいないので特に直していません
固有の値を書いたのは
APIKEY,ROOMID,reviewerとbodyのメッセージとmr_urlをマージリクエストじゃなくてコミットに変えたくらい

テストでぽちっとテストするとチャットワークに書きこまれるのでうまくいったら保存して有効化すると
たぶんコミットしたらメッセージがいくように。

アプリの登録したのでWebhookの設定いらんかった（たぶん）です。
15分おきzapで100回までなら0円でいけるっぽいです。
もうちょっと色々規模おおきくやりたい感じになったらAzureFunctionかfluentdのやつかなんかでなんとかするかんじでしょうか。


####**・さんこう**
[GitLabのコードレビュー依頼をChatWorkのタスク通知でランダムアサインしてみた ｜ Developers.IO](https://dev.classmethod.jp/tool/git/random-assigned-gitlab-code-review-request-with-chatwork-task-notification/)
[Zapierとは？非エンジニアでもルーチン作業を自動化できるツールの使い方を解説｜ferret [フェレット]](https://ferret-plus.com/8654)
[fluentd初心者がgitlabとChatWorkを連携してみた - くりにっき](https://sue445.hatenablog.com/entry/2014/06/29/094035)
[【管理者さま向け】各種ツールとの連携について | Uniposヘルプセンター](https://intercom.help/unipos/%E7%AE%A1%E7%90%86%E8%80%85%E3%81%95%E3%81%BE%E5%90%91%E3%81%91-%E5%90%84%E7%A8%AE%E3%83%84%E3%83%BC%E3%83%AB%E3%81%A8%E3%81%AE%E9%80%A3%E6%90%BA%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6#chatwork%E3%81%A8%E3%81%AE%E9%80%A3%E6%90%BA%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)
[GitLab から ChatWork へ 通知を飛ばす - 約束の地](https://obel.hatenablog.jp/entry/20180504/1525408502)
[astronaughts/chabot: Chabot is Web-hook receiver for ChatWork.](https://github.com/astronaughts/chabot)
[Azure Functionsを使ってGitLabのWebhookをDiscordに通知するようにしたって話 - kokeiro’s blog](http://kokeiro.hatenablog.com/entry/2017/04/30/175005)
[Azure Functionsでエラー検知してChatworkにメッセージを送る - Qiita](https://qiita.com/KokiTakeishi@github/items/5ab626850f983b3f152d)