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', ''); //