2022-07-29
(C) Questetra, Inc. (MIT License)
2
This item sends a message to Slack with Bots.
この工程は、Bots 機能を使って Slack にメッセージを投稿します。
https://support.questetra.com/bpmn-icons/slack-chat-post-bots/
https://support.questetra.com/ja/bpmn-icons/slack-chat-post-bots/
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAABFBJREFUWEfN
l39ME2cYx79vofwSEljXirCwLWOSYJRotjgnJDPZWNKjg4BYpDgnCCuYKCxmxLUu7pcJZupitmqY
XTfFLRnaqeXqYibbXExIdNQ/tj+WLMvCEjPoGGABxULf5b3Sy7W9a0+zhd0f/aP3Ps/zeZ/fR7DE
D1Fr31RgygrNh2pBsYmCrAXoYwDyFuUnAPI7AfWB4FtNqsbtueWZVaM7KYBRb8wnIN0UsALIUKMU
wF0CnKCgPV6/989EMgkBjIYqKyh9H8AylYZjj82AkL3esYETSvKKANzDnIMStD+g4SgxQnGc/4vv
kNMlC2A0cJ+DYuu/YVzUQfCFd4xvjNUZB6Dm5kUlRRj5ZUTUlZOXA41Gg6nxqYTMcp6IAliM+XEl
LcyQa9iFzGUZmJ6cxrbVL6PhNTO2dG4BIQS8i4ejW1E8rJaQdmlOiAAs2wHya6KEaznQjNqOWpHv
1MFTgvGMrHBxzAfnUV1YkyxyMwAtjlSHCMDpuaMU6EwkXVZRhoPn3hOPeD+7hBctlUhJTRH/4wxV
yQBAgA94P98lOIT9sCazEAyNq6lzBtHR0460jDSc+9CNtndb7xuA9YkUrUbHmpUAwBm4JkpxOha9
4PEVaHmrBfmP5ke9unc3CM9JDwb7B3Hx1oU4gFXrS9HU3YShr4dwofeirEcIwTZ+jO8LA+g5JwWa
Y0/2/XQaeYZIt43Xs+eFThy5dDgKwLyyAWd+7kOqNlUQ6GnrwdXzP8QJE+AT3s+3CABGfdUwQNfG
nhoY9QjZrfSwJDR3mZGemS4cCd4Lwv2RW/gv8jAvHd51REYF8Xn9A+sWAbi/JYNFPGz71IZnjRtk
7c/dmYOl1ILttu0w7TQJZxyvO6B/RI/63fViVbRteBWjI6NyOia8fv6hCABVumVxWTHWbFyNhfkF
TI3fDt90LohrA9dEEZYrLFSjf4xBl6/DqmdKMTt9B5fPXEZoIaToQa+fD/vXqOdkAXbsfwV1u+pA
NERwr/nJBnw81AvdCp1wq53rW4XbN7+5Q4y51NqkfxLW8nYEJgKyEFIA2RBIM1wuvr32XjTubUR2
brbiLRN0R2kI5JPw7G/9yMzOFJT7vvdh5vYsyk0bRWOsEZWVr0HhE4WKAM4DTrgdXyVOQqUyfPr5
p9D6TisCkwHYN9vReawrDsD1tgs21xsoWVcSZYTlzPB3PhyyHgINxUc4qgyVGlEs9j7nvjiAXH0u
snKy8OOVGwo3lXdOVCNS24rlAKSz4ObVm7BttiuGQ/IiuhWzF2qG0Z6ju1FpqRT19B/rR421Bto0
rfAfc/tLBdVJAeKGUbgUk4/j5UXL4bx+UuiOLK6NpRZhMFVUV4iJaq/fnwxAfhwLEOElNOFGwUpu
U91zuPLlIGYD4c2bTci0dC2uf3MjmXHlhSQiqWYlS25FIfFkltP/31L6X3jivtfyCMSSfpiIEEv5
aSZNpSX7OH3QjFcr9w829dcwn81r2gAAAABJRU5ErkJggg==
{
configs.put('conf_OAuth2_V2', 'Slack');
configs.put('ChannelName', channelName);
configs.put('Text', text);
// 文字型データ項目を準備して、config に指定
const mentionDef = engine.createDataDefinition('メンション', 4, 'q_mention', 'STRING_TEXTFIELD');
configs.putObject('conf_Mention', mentionDef);
// 文字型データ項目の値(保存先フォルダID)を指定
engine.setData(mentionDef, mention);
configs.put('Fallback', fallback);
configs.put('Color', color);
configs.put('Title', title);
configs.put('TitleLink', titleLink);
configs.put('AttachText', attachText);
const attachment = {
"fallback": fallback,
"color": color,
"title": title,
"title_link": titleLink,
"text": attachText
}
return attachment;
};
/**
* POSTリクエストのテスト(Slack ID 取得)
* @param {Object} request
* @param request.url
* @param request.method
* @param email
*/
const assertPostGetIdRequest = ({url, method}, email) => {
let newEmail = email.replace("@", "%40");
expect(url).toEqual(`https://slack.com/api/users.lookupByEmail?email=${newEmail}`);
expect(method).toEqual('POST');
};
/**
* POSTリクエストのテスト(チャット投稿)
* @param {Object} request
* @param request.url
* @param request.method
* @param request.contentType
* @param request.body
* @param channel
* @param text
* @param attachment
*/
const assertPostRequest = ({url, method, contentType, body}, channel, text, attachment) => {
expect(url).toEqual('https://slack.com/api/chat.postMessage');
expect(method).toEqual('POST');
expect(contentType).toEqual('application/json; charset=UTF-8');
const bodyObj = JSON.parse(body);
expect(bodyObj.text).toEqual(text);
expect(bodyObj.channel).toEqual(channel);
expect(bodyObj.as_user).toEqual('true');
let attachArray = [];
if (Object.keys(attachment).length !== 0) {
attachArray.push(attachment);
}
expect(bodyObj.attachments).toEqual(attachArray);
};
/**
* チャット投稿失敗の場合
* テキストが空、attachmentタイトル未入力、attachmentテキスト未入力
*「テキスト」「Attachment タイトル」「Attachment テキスト」のいずれかが設定されていないと、投稿失敗する
*/
test('Message to send isn\'t set', () => {
prepareConfigs(configs, 'channel1', '', null, 'fallback1', '#ff0000', '', 'https://titleLink1', '');
//