在Slack上可以在任何时间进行Teamspirit/Salesforce的打卡
上次我写了一篇关于如何使用Slack的斜杠命令来打卡Team Spirit的文章。这是最新的更新。
处理流程
-
- botkit上でCronにより定時に勤怠打刻状態を取得する
-
- 打刻完了してない場合に、その旨をDMで伝え、出勤or退勤コマンドを使って処理を進めてもらう
- DM上で時刻を4桁の数字で入力して打刻完了
为什么设计成这样?
-
- 最初はスラッシュコマンド /出勤 みたいな実装を目指していたが、スラッシュコマンドの中から convo.ask で会話を始めると、対応の入力がうまく処理されないっぽい。
- どうせCronでDM送るのだから、そのDM上でやり取りすればスムーズで、わざわざスラッシュコマンドで呼び出す必要性が薄い
辛苦了
-
- slackAPIがタイムアウトしないような設計
- response_urlが取れない
代码 (daima)
吉尔吉/TS-定制打卡
使用方法
请从此处安装按钮将该存储库部署到Heroku上。
https://github.com/geeorgey/ts-custom-dakoku
请输入各种变量后再进行部署。
环境
-
- node.js
-
- botkit
-
- express //webサーバ
- mongodb //slackの認証情報の保存
这个程序在node.js上运行。在我的环境中,它可以在heroku上运行。
关于团队精神的打卡应用Apex。
我使用了ngs / ts-dakoku作为参考来进行以下代码的编写(非常感谢ngs先生)。请将以下两个类部署到生产环境并使用:
-TSTimeTableAPIController.cls
-TSTimeTableAPIControllerTest.cls
有关设置等信息,请参考此链接:https://ja.ngs.io/2018/02/14/ts-dakoku/
关于用于自定义打印的代码
请将/apex/下的2个class文件部署到Salesforce的生产环境中,方法与上述相同。
在Salesforce中创建连接应用程序。
-
- アプリ名: 任意
-
- API Name: 任意
-
- Contact Email: 管理者のEmail
-
- OAuth 設定: チェックを入れてください
-
- コールバック URL: https://myapp.herokuapp.com/oauthcallback (これは後でherokuアプリを立ち上げたあとに書き換えます)
-
- Selected OAuth Scopes: Full Access (full)
- 保存する
创建Heroku应用
heroku CLIをインストール
$ heroku login
// メアドとパス・二段階認証でログイン
$ heroku create appName
//appNameは任意
//ここまでやるとアプリURLが発行されるので先程作ったSalesforceアプリのコールバックURL(https://myapp.herokuapp.com)部分を置き換えてください
ここからはGUI。 https://dashboard.heroku.com にログインして先程作ったアプリの設定画面を開く
Resources画面に行き、add-onにmLab MongoDBを追加
Settings画面に行き、Reveal config varsボタンを押して環境変数を設定します
编写 Slack 应用
https://api.slack.com/apps
Create new appする
Basic Informationにある[Client ID][Client Secret][Verification Token]を以下で使います
Interactive Componentsに移動してRequest URLに
先程herokuで作ったアプリのURL/slack/receive を設定する
创建斜线命令
slackアプリのスラッシュコマンドページへ行き、Create New Commandを押す
コマンド名: /ts
Request URL: herokuアプリのURL/ts
Short Description: チームスピリット打刻コマンド
herokuの環境変数
-
- MONGODB_URI herokuのadd onで mLab MongoDB :: Mongodb をインストールすると自動的に入ります
-
- SF_CLIENT_ID //先程Salesforceで作ったアプリのID
-
- SF_CLIENT_SECRET //先程Salesforceで作ったアプリのsecret
-
- SF_LOGIN_URL //自分のSalesforceのURL。https://[任意の文字列].my.salesforce.com
-
- SF_USER_NAME //管理者のメアド
-
- SF_PASSWORD //管理者のパス
-
- SLACK_ID // Slackアプリの[Client ID]
-
- SLACK_REDIRECT // herokuで作成したアプリのURL
-
- SLACK_SECRET // Slackアプリの[Client Secret]
- VERIFICATION_TOKEN // slackアプリの[Verification Token]
关于MongoDB
在Heroku仪表盘上打开资源选项卡,然后点击mLab MongoDB :: Mongodb,即可打开Mongo DB的管理界面。
需要创建名为sfusers的集合,请点击”Add collection”按钮进行添加。
Salesforce的访问令牌将保存在这个集合中。
使用方法
在Slack上键入/ts会启动斜杠命令。开始时需要身份验证以登录Salesforce账户,点击显示的URL以注册登录信息。(注意:这些数据同样应该存储在Mongodb中,但目前尚未实施)。登录后再次键入/ts,会显示上班/下班/取消按钮,请点击按钮进行打卡。
cronについて
-
- cronTimeMorning:あさイチで未打刻ユーザを検索して、打刻ボタンをDMで送りつける時間です
-
- cronTimeMorningConfirmation 上述のボタンを押さなかったユーザに、カスタム時刻での入力を促す時間です
-
- cronTimeNight: 帰宅時間に帰宅打刻を促すDMを送りつける時間です
- cronTimeNightConfirmation: 上述のボタンを押さなかったユーザに、カスタム時刻での入力を促す時間です
关于Botkit
使用botkit.js可以实现botkit的基本功能。无法在这里接收interactive_message_callback。由于端点已在modules/receive.js中创建,请在那里进行定义。
关于server.js
如果要添加斜杠命令,请在server.js中进行定义,并将文件放置在modules/目录中。