凄く寒いので何となく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>
やりたい事が色々とあって悩む。