どのように私はスラックボットを構築することによってAPIについて学んでいる-第2部
私のバージョンを続けて、私はHellogalaticバージョンを完了しました.この論文の記事はHeybotのHellogalCamバージョンの開発プロセスと、公式ドキュメントがない私の大好きな課題の1つを共有することです.
私の完全なコードが利用可能ですhere .
ロードマップ
トライアルアカウントとトークンキーを作成することにより、Bamboohr APIに接続します. “hello”と言うと、Heybotはアクションオプション(ボタン)で答えます. サービスを選択するボタンをクリックすると、従業員IDのためのheybotアシス
heybotは、私に対する答えを返します. 資源
ボタンを含むリッチテキストメッセージ/メニュー/日付ピッカー モーダル.
スラック1号、スラック紹介 これは私のアクションメッセージです
あなたは私の見ることができますBlock payload here 下
- 1
通常、
このStackOverflow post 包括的な答えです.詳細についての私の完全な答えは、ここにありました.下記は、あなたの速い観察のための私の解決です.
注:ボタンをクリックすると、それは
サンプルを保存
私は、bamboohrから答えを得るために、そのIDを使用しました. 私はユーザーに返信したい.
正しい関数を呼び出すには
返信するには
これに関する公式文書はスラックからはなかった.しかし、私は
このSlack doc 推奨記憶
フェブ
私の完全なコードが利用可能ですhere .
ロードマップ
>パート3:最終版(次に来る)
私の最初のロードマップから思い出して、これは我々が立っているところです.
デモ
目的
このバージョンでは、私の目標は
目的
このバージョンでは、私の目標は
Modal
.heybotは、私に対する答えを返します.
資源
バンブーAPI
The Documentation 明確であり、よく整理APIは、活動(レポート、ログイン、従業員)によって分類されます.
私は1つの単一の顧客のためにHeybotを構築したかったので、私が必要としたすべては(1)アカウント(注意:トライアルアカウントは7日間のみ有効です)、(2)サブドメインは私が私の試用アカウント(私の会社Monsterinc : D)を開いたときに作成された“Mycompany”です、(3)私は私の試用アカウント“設定”から作ったAPIキー.
APIキーの作成方法
APIキーをコピーしてノートに保存することを勧めます.
注意しなければならないもう一つの重要なことは、AuthorizationCacheトークン(「基本的なNndjim EyeClipAttribute **」)です.
Why do we need this?
私たちは直接MamboohrにHTTP要求を送るためにAPIキーを使用することができません.APIキーを認証トークンに変換する必要があります.
フラスコアプリを実行する前に、我々はする必要がありますexport AUTHORIZATION_TOKEN= "NDJim**********
環境変数(私がしたことと似ています)SLACK_TOKEN
and SLACK_SIGNING_SECRET
ここで説明しました.
How to use BambooHR API Key to find AUTHORIZATION TOKEN
?
に移動API Reference ページとAPIを選択し、“それを試してください”.
課題と解決
スラック詐欺APIの上で正しい文書を見つけてください
スラックはAPIをアップグレードしました、そして、そのため、いくつかの特徴または方法は中止されたか、まだ使われていました、しかし、彼らのサポート資源は非難されませんでした.
HellogalCityバージョンでは、ビルドする必要がありました.
Why do we need this?
How to use BambooHR API Key to find AUTHORIZATION TOKEN
?
スラック詐欺APIの上で正しい文書を見つけてください
スラックはAPIをアップグレードしました、そして、そのため、いくつかの特徴または方法は中止されたか、まだ使われていました、しかし、彼らのサポート資源は非難されませんでした.
HellogalCityバージョンでは、ビルドする必要がありました.
スラック1号、スラック紹介
Blocks
(ブロックキットビルダーのサポートattachments
これによればpost . このアップグレードの目的は、よりインタラクティブな機能(投票、ボタン、メニュー)またはリッチコンテンツ(ビデオ、リンク、画像)をサポートすることです.Blocks
そして、chat_postMessage()
メソッド.あなたは私の見ることができますBlock payload here 下
def understood_greeting(self, user)
.- 1
Modal
置換Dialogs
これによればpost . この変更により引退した dialog.open()
方法と導入 views.open()
モーダルを開く方法chat_postMessage()
または他の規則的な方法Modal
).content type = application / x - www - form - urlencodedでリクエスト本文からコンテンツを取得する
通常、
Content-type = application/JSON
非常に簡単で簡単です.私たちはrequest.data
, request.get_data
, request.json
, request.get_json
.application/x-www-form-urlencoded
はByteString型ファイルです.それで、我々が使うならばrequest.data
(共通の解決策)空の文字列を取得します.このStackOverflow post 包括的な答えです.詳細についての私の完全な答えは、ここにありました.下記は、あなたの速い観察のための私の解決です.
@ app.route('/slack/request_handler', methods=['POST'])
def request_handler():
# return an ImmutableMultiDict with 1 pair
payload = request.form
# get value of key 'payload'
a1 = payload['payload']
# Note that if you have single quotes as a part
# of your keys or values, this will fail due to
# improper character replacement.
# Convert a string (representation of a Dict))
# to a Dict
a2 = json.loads(a1)
# Get value of key "channel"
channel = a2["channel"]
print(channel)
# {'id': 'D01ACC2E8S3', 'name': 'directmessage'}
VisuateRangeメタデータを使用してViewCloud提出ペイロードの制限を解決する。
注:ボタンをクリックすると、それは
block_actions
を含むchannel_id
, action_id
. モードが閉じられるとき(提出される)とき、Aview_submission
ペイロードが送信されます.サンプルを保存
block_actions
ペイロードview_submission
ペイロードhere .Context:
- A
Modal
appears to get Employee ID input from a user. Once the user provided the ID and clicked "Submit", aview_submission
payload was sent to my server.
Problem:
正しい関数を呼び出すには
GET
MambooHRを要求し、適切なテンプレートメッセージをビルドするには action_id
私が作成したときに設定Block
メッセージ.view_submission
ペイロードにはaction_id
.返信するには
channel_id
必須です.view_submission
ペイロードにはchannel_id
.Solution:
これに関する公式文書はスラックからはなかった.しかし、私は
private_metadata
保管するaction_id
から受信block_actions
ペイロードこのSlack doc 推奨記憶
channel_id
インprivate_metadata
.Pseudocode
Code
# build view payload
def get_employee_id_modal(self, channel_id, action_id):
private_metadata = {
"channel_id": channel_id,
"action_id": action_id
}
# jsonify a dict into a string
# (required type for private_metadata)
json_private_metadata =
json.dumps(private_metadata)
# return a block
return ({
"type": "modal",
"private_metadata": json_private_metadata,
"callback_id": "employee_id_modal",
[....]
})
読書ありがとう!フェブ
Reference
この問題について(どのように私はスラックボットを構築することによってAPIについて学んでいる-第2部), 我々は、より多くの情報をここで見つけました https://dev.to/totorosyd/how-i-m-learning-about-apis-by-building-a-slackbot-part-2-9mcテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol