Warning: Use of undefined constant SECURE_AUTH_COOKIE - assumed 'SECURE_AUTH_COOKIE' (this will throw an Error in a future version of PHP) in /home/oikeru/oikeru.com/public_html/wp-includes/pluggable.php on line 805

Warning: Use of undefined constant LOGGED_IN_COOKIE - assumed 'LOGGED_IN_COOKIE' (this will throw an Error in a future version of PHP) in /home/oikeru/oikeru.com/public_html/wp-includes/user.php on line 527
Salesforce2Slack Integration with Web API | カネ | ライフ | 技術

Technology

Salesforce2Slack Integration with Web API

投稿日:

前回、Webhook URLでSalesforceから、Slackのチャンネルに投稿する記事を公開した。非常にシンプルでした。今回、やや複雑なSlack Web APIを使って、投稿することをチャレンジしてみたいと思います。Salesforce側で、HttpのPOSTメソッドでWebhook URLを用いて、Slackに投稿することが十分です。投稿・リンク付き投稿・添付ファイル付き投稿もできます。しかし、普段のインテグレーションはWEB APIを使って、アクセスし、操作するです。そして、セキュリティ問題や権限問題などを考慮する場合、ズバリWeb API使用です。Slack web api もちゃんとしたアクセス権限を設定可能です。アプリケーションを作成後にスコープを設定するによって、外部アプリケーション(Salesforceなど)がSlackにアクセスする範囲を決められるです。外部にアクセスしてほしくないチャンネルはあるでしょう。そこにある添付ファイルなどがあるでしょう。不注意によって、アクセスされてしまったとか、なにが起こり、どんなことにつながり、どれほど炎上になってしまうかわからないので、慎重に外部にアクセスしてほしい範囲を決めたほうが間違いないです。slack webhook urlは確かに簡単ですが、とはいえ、slack web apiで外部からアクセスして、投稿もそんなに複雑じゃないけどね。エンドポイントは変わり、設定もやや多いだけです。

SalesforceとSlackをつながるため、Slack Web APIが必要

SalesforceとSlackをつながるため、Slack Web APIが必要。WEB APIを用いて、Slackチャンネルに投稿するにはSlack側で、アプリケーションを作成しないと使えない。つまろ アプリケーションの作成を行わなければSlack Web APIを使用することができません よ。

Slack Web APIのアプリケーション作成

  1. Slack API サイトにアクセスする(もちろん、ログイン情報が必要)
  2. 新規アプリケーションを作成する(Start BuildingボタンもYour AppsもOK)

Slack API サイト

新規アプリケーション作成

アプリケーション名の入力と含みたいワークスペースを選択する

アプリケーション作成後に OAuth & Permissions

権限で、スコープを設定する、僕の場合、SalesforceでSlackに投稿だけなので、
chat:writer:user権限に設定しています。
スコープを設定してから、Install App to Workspace緑のボタンも有効になります。
投稿したいワークスペースをインストールすればいい

上記の画像のインストールボタンによって、対象ワークスペースをインストールしてから下記のようになります。アクセストークンが発行されます(機密情報だぞ)
「xoxp-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx」の部分
これを使って、SalesforceのAPEXでHTTPメソッドPOSTで送信すれば、投稿可能

Apexサンプルコード(匿名コンソール)

終わりに

ポスト設定に誤りがある場合は
・okはfalseでerrorにはinvalid_authが設定されて戻されます。
・okはfalseでerrorにはnot_in_channelが設定されて戻されます。
様々なエラーありますよ。

webhook URLで一番簡単だが Scopeを使ってSlackが公開しているどの機能を範囲として公開することができます。機能の制限せずに一括で設定したいと思うかもしれませんが、アカウント情報など重要なデータへのアクセスもできるため使用範囲を限定して設定するほうが安全にWEB APIを利用することができます。

リファレンス

-Technology
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

【勉強法網羅】 sfdc フィールドサービス 試験準備

こんにちは、管理人の@Salesforce.Zです。 Salesforceには資格がたくさん設定をしている。開発系・デザイン系・コンサルタント系、さまざまな種類を設けている。今回、そのうちのField …

【FSL】 作業指示 作業指示明細 サービス予定の関係

こんにちは、管理人の@Salesforce.Zです。 Contents1 作業指示とサービス予定2 作業指示に対する、作業指示明細とサービス予定 作業指示とサービス予定 通常では、作業指示(WorkO …

Saleforce 実行権限 トリガ クラス

こんにちは、管理人の@Salesforce.Zです。普段、 Apex はシステムコンテキストで実行されます。つまり、コード実行時に、現在のユーザの権限、項目レベルセキュリティ、および共有ルールは考慮さ …

【攻撃実例】 wordpress管理者へ セキュリティをしっかりしよう

サイトに症状がなくても、あなたのサイトにもう既にウィルス感染しているかもしれません。サーバーのファイルをひたすらみてみてください。おかしいファイルありませんか。稼いでるサイトの裏に実はウィルスファイルが置かれていることが別のケース対応で、ついでに発見したことがあります。

Salesforce カスタム設定 カスタムメタデータ 比較 使うべきなのは?

カスタム設定/カスタムメタデータの使用について、どっちを使うべきかをここではっきりできる