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

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

関連記事

再出品大変 新ラクマ フリル 自動出品ツール black cat 自動で稼げる

フリマ運営するなら、出品が大変です。僕もそんな感じです。撮影はもちろん、出品も大変、さらに売れない時に再出品もしないといけない。結構労力が必要な仕事です。その中で、出品と再出品の労力と時間を節約してく …

Salesforce2Slack Integration インテグレーション シンプル

IT業界では、インテグレーションをすれば、いろいろな製品をつながって、弱点やできないことを補うことができる、良いところですね。今回、Slackの投稿をSalesforceから操作したいので、関連設定や …

Apex 一括処理 バッチの使用およびテストクラス

こんにちは、管理人の@Salesforce.Zです。 一括処理をバッチにすると、ガバナ制限を回避できるし、大量処理も可能。うまく設計できたら、いいですね。 Contents1 Apex Batchの構 …

Saleforce 実行権限 トリガ クラス

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

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

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