シェルスクリプトでchatworkのAPIを使ってメッセージを投稿する機能を実装しました。

設定を記載するconfig.shファイルと、 実際の投稿処理を記載したmain.shファイルで分けました。

事前に行うこと

chatworkのAPI KEYは事前に取得をお願いいたします。 チャットワークAPIドキュメント こちらのドキュメントに沿って行えば取得できるはず。

config.sh

#!/bin/sh

# chatwork
## API_KEY
CHATWORK_API_KEY="[your api key]"

## ROOM_ID
CHATWORK_ROOM_ID="[your room id]"

## MESSAGE
CHATWORK_MESSAGE_HEADER="[info][title]タイトルです。[/title]"
CHATWORK_MESSAGE_MESSAGE="本文"
CHATWORK_MESSAGE_FOOTER="[/info]"

[your api key]、[your room id]は変更して下さい。 MESSAGEのところで、投稿するメッセージを編集できます。

main.sh

#!/bin/sh
SCRIPT_DIR=$(cd $(dirname $0); pwd)
. ${SCRIPT_DIR}/config.sh

###
# チャットワークにメッセージを送信する
# $1 - API KEY
# $2 - ルームID
# $3 - メッセージ
###
function chatworkSendMessage() {
  local api_key=$1
  local room_id=$2
  local message=$3

  curl -X POST -H "X-ChatWorkToken: ${api_key}" \
    --data-urlencode "body=${message}" \
    "https://api.chatwork.com/v2/rooms/${room_id}/messages"
}

chatworkSendMessage ${CHATWORK_API_KEY} ${CHATWORK_ROOM_ID} "${CHATWORK_MESSAGE_HEADER}${CHATWORK_MESSAGE_MESSAGE}${CHATWORK_MESSAGE_FOOTER}"

chatworkSendMessageという関数が、実際の投稿処理を担う関数になります。 使い方としては、 (第一引数)api_key = 取得したAPI_KEY (第二引数)room_id = 登校対象の部屋ID (第三引数)message = 投稿内容 です。

chatworkSendMessage ${CHATWORK_API_KEY} ${CHATWORK_ROOM_ID} "${CHATWORK_MESSAGE_HEADER}${CHATWORK_MESSAGE_MESSAGE}${CHATWORK_MESSAGE_FOOTER}"

関数呼び出しはここの部分になります。 設定ファイルから読み取った値を引数として指定してます。

これで、chatworkにシェルスクリプトから投稿をすることができました。