凄く寒いので何となくColdFusionからSlackへアクセスする為の関数を作ってみました。
作って見たかっただけなので使いみちは無いと思います_(:3」∠)_
WebHook使ってるだけなので特段難しいことは何もしてません。
<!--- Slack接続用 --->
<cffunction name="SendSlackWebHook" returnType="boolean" access="public">
<cfargument name="message" type="String" required="true">
<cfargument name="attachmentsMessage" type="String" required="false" default="">
<cfscript>
try {
// Web HookのURLを設定する
hookUrl = "https://hooks.slack.com/services/…";
// 送信用のデータを作成する
payloadData = StructNew();
StructInsert(payloadData, "text", ARGUMENTS.message);
if (NOT attachmentsMessage EQ "") {
StructInsert(payloadData, "attachments", StructNew());
StructInsert(payloadData.attachments, "text", ARGUMENTS.attachmentsMessage);
}
// リクエストを送信する
result = SendRequest(hookUrl, payloadData);
} catch(any e) {
WriteOutput("[Exception]:" & e.message);
abort;
} catch(CF4Slack e) {
WriteOutput("[CF4Slack Exception]:" & e.message);
abort;
} catch(CF4Slack.SendRequest.ArgumentException e) {
WriteOutput("[CF4Slack.SendRequest.ArgumentException]:" & e.message);
abort;
}
return result;
</cfscript>
</cffunction>
<!--- リクエスト送信関数 --->
<cffunction name="SendRequest" returnType="boolean" access="private">
<cfargument name="hookUrl" type="String" required="true">
<cfargument name="payloadData" type="struct" required="true">
<cfscript>
if (Len(hookUrl) EQ 0) {
throw(type="CF4Slack.SendRequest.ArgumentException", message="URLが正しくありません。");
} else if (StructCount(payloadData) EQ 0) {
throw(type="CF4Slack.SendRequest.ArgumentException", message="パラメータエラー");
}
jsonData = serializeJSON(payloadData);
var httpService = new http();
// Webhook URLを設定
httpService.setURL(hookUrl);
httpService.setMethod("POST");
httpService.setTimeout(5);
// JSONデータ
httpService.addParam(type="formfield",name="payload",value=jsonData);
var reply = httpService.send().getPrefix();
// ステータスがOKだった場合のみ
if (reply.Statuscode EQ "200 OK") {
return true;
} else {
throw(type="CF4Slack.SendRequest.RequestException", message="ErrorDetail:[#reply.ErrorDetail#] Filecontent:[#reply.Filecontent#]")
}
</cfscript>
</cffunction>
<cfoutput>
<!--- 動作確認用 --->
<cfif SendSlackWebHook("確認用メッセージ")>
<p>送信完了</p>
<cfelse>
<p>送信失敗</p>
</cfif>
</cfoutput>
やりたい事が色々とあって悩む。

