質問: { "method" : "POST", "headers": {"Content-type": "application/json"}, "payload" : JSON.stringify({ text: "今日の予定", channel: "@"+e.parameter.user_name }) }; UrlFetchApp.fetch(url, options); return null } ``` ### 試したこと **■チャンネル表記を色々変えてみる** 以下パターンも試してみました。 | channelに渡すもの | 結果 | | --- | --- | | `"@" + e.parameter.user_name` | slackbotに通知される | | `"@" + e.parameter.user_id` | slackbotに通知される | | `"<@" + e.parameter.user_name + ">"` | 送信エラー | | `"<@" + e.parameter.user_id + ">"` | 送信エラー | | `"#" + e.parameter.user_id` | 送信エラー | | `"#" + e.parameter.user_name` | 送信エラー | | `encodeURIComponent("@" + e.parameter.user_name)` | 送信エラー | | `encodeURIComponent("@" + e.parameter.user_id)` | 送信エラー | 固定で私のユーザ名、ユーザIDも試しましたが、slackbotに通知されてしまいました。 **■自作のSlackAPI経由で通知してみる** 着信Webフックではなく自分でSlaskAPIを作って、IncomingWebhooksを設定して試してみました。 こちらの方法では設定したユーザにダイレクトメッセージが発行されましたが、 Webhook URLがユーザ毎で変わってしまうので切り替えられませんでした。 **■デフォルトチャンネルを自分のダイレクトメッセージにしてみる** もしかして外部からの通知は全部slackbotになるのかと、 試しに着信Webフックのデフォルトチャンネルを自分のダイレクトメッセージ宛てしてみました。 やりたいこと通り、私にダイレクトメッセージが届きました。 ### 補足情報(FW/ツールのバージョンなど) 使用言語:GoogleAppsScript 使用APP:発信Webフック、着信Webフック
回答: 多分やりたいようにできています。 ダイレクトメッセージチャンネル(チャンネルではないですが、メッセージそのものと区別するため、こう呼びます)の仕様というか、意味を誤解していませんか? あなた自身でログインしたときダイレクトメッセージ欄にあるスラックボットは、スラックボット⇔あなたのやりとりです。 仮にボットユーザでログインできたとしたら、ボットのあなたの名前のところに投稿内容が見えるはずです。 普通のユーザ間で考えると、鈴木さんのダイレクトメッセージ欄にある田中さんのところは、田中さんの画面では鈴木さんと書いてある欄に書き込まれた内容が表示されます。 あなたが目にするあなた自身のダイレクトメッセージチャンネル、あるいは鈴木さんが目にするダイレクトメッセージチャンネルは、自分から自分に送った、他の人には一切見えない欄です。 それでも自分の名前のところに送りたければ、宛先だけではなく、送信者を偽装して、あるユーザからそのユーザに送ったようなデータを作る必要があります(できるかどうかはわかりません)