コラボチャット: 投稿

コラボチャット: 投稿

Collab Chat: Post

この工程は、コラボチャットにメッセージまたはコメントを投稿します。

Basic Configs
工程名
メモ
Auto Step icon
Configs for this Auto Step
conf_ChannelName
C1: 投稿先チャンネル名(空の場合、この工程を処理しているケースのチャンネル)#{EL}
conf_MessageId
C2: 投稿先メッセージ ID(コメントを投稿する場合)
conf_Markdown
C3: 投稿文(Markdown)#{EL}
conf_Files
C4: 投稿に添付するファイルが保存されているデータ項目
conf_PostId
C5: 投稿したメッセージ/コメントの ID を保存するデータ項目

Notes

  • 組織チャンネル、アプリチャンネル、ケースチャンネルに投稿する場合、[C1: 投稿先チャンネル名]は次のように指定してください
    • 組織チャンネル: g{組織 ID}(例: g1
    • アプリチャンネル: m{アプリ ID}(例: m12
    • ケースチャンネル: p{ケース ID}(例: p2039

Capture

See Also

Script (click to open)
  • 次のスクリプトが記述されている XML ファイルをダウンロードできます
    • feed-post.xml (C) Questetra, Inc. (MIT License)
    • Professional のワークフロー基盤では、ファイル内容を改変しオリジナルのアドオン自動工程として活用できます


const main = () => {
    ////// == 工程コンフィグ・ワークフローデータの参照 / Config & Data Retrieving ==
    const channelName = retrieveChannelName();
    const messageId = retrieveMessageId();
    const markdown = configs.get('conf_Markdown') ?? '';
    const files = retrieveFiles();

    if (markdown === '' && files.length === 0) {
        throw new Error('Post content and attached files are both empty.');
    }

    ////// == 演算 / Calculating ==
    const postId = post(channelName, messageId, markdown, files);

    ////// == ワークフローデータへの代入 / Data Updating ==
    saveData('conf_PostId', new java.math.BigDecimal(postId));
};

/**
 * config から投稿先チャンネル名を読み出す
 * 空の場合、この工程を処理しているケースのチャンネル名を返す
 * @returns {String}
 */
const retrieveChannelName = () => {
    const channelName = configs.get('conf_ChannelName') ?? '';
    if (channelName !== '') {
        return channelName;
    }
    return `p${processInstance.getProcessInstanceId()}`;
};

/**
 * config から投稿先メッセージ ID を読み出す
 * 未設定の場合、null を返す
 * @returns {Number|null}
 */
const retrieveMessageId = () => {
    const def = configs.getObject('conf_MessageId');
    if (def === null) {
        return null;
    }
    const messageId = engine.findData(def);
    if (messageId === null) {
        return null;
    }
    return messageId.longValue();
};

/**
 * config から添付ファイルを読み出す
 * 未設定の場合、空配列を返す
 * @returns {Array<QfileView>}
 */
const retrieveFiles = () => {
    const def = configs.getObject('conf_Files');
    if (def === null) {
        return [];
    }
    return engine.findData(def) ?? [];
};

/**
 * コラボチャットに投稿する
 * @param {String} channelName
 * @param {Number|null} messageId
 * @param {String} markdown
 * @param {Array} files
 * @returns {Number} 投稿したメッセージ/コメントの ID
 */
const post = (channelName, messageId, markdown, files) => {
    let feedWrapper = feedService.begin()
        .setChannel(channelName);
    if (messageId !== null) {
        feedWrapper = feedWrapper.setMessageId(messageId);
    }
    if (markdown !== '') {
        feedWrapper = feedWrapper.setMarkdown(markdown);
    }
    files.forEach(file => feedWrapper.attachFile(file));
    return feedWrapper.post();
};

/**
 * データ項目への保存
 * @param {String} configName
 * @param {*} data
 */
const saveData = (configName, data) => {
    const def = configs.getObject(configName);
    if (def === null) {
        return;
    }
    engine.setData(def, data);
};

        
上部へスクロール

Questetra Supportをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む