シェルスクリプトで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にシェルスクリプトから投稿をすることができました。