Github Action|免费部署 ZReviewTender App 商城评价监控机器人,三步骤快速上手
针对 iOS 与 Android App 开发者,解决评价监控繁琐问题,利用 Github Action 免费部署 ZReviewTender 评价机器人,30 分钟完成设定,稳定抓取并即时转发评价到 Slack,提升回应效率与用户满意度。
Click here to view the English version of this article.
點擊這裡查看本文章正體中文版本。
基于 SEO 考量,本文标题与描述经 AI 调整,原始版本请参考内文。
[Quick Start! ] Github Action x ZReviewTender 免费快速部署你的 App 商城评价监控机器人
简单三步骤为您建立免费稳定安全的 App 评价机器人,即时关注使用者的最新评价。
ZReviewTender
ZReviewTender — 是我在 2022/08 制作开源的 App 商城评价机器人,功能是会自动捞取 iOS App Store, Android Google Play 商城上的 App 使用者评价并转发到指定的 Slack Channel。
另外可以指定评价捞取规则、串接 Google 翻译、Asana、Google Sheet,也支援自订义客制化操作。
Github Action
Github Action 是由 Github 提供的 CI/CD 自动化集成工具,我们可以使用自己的机器做为伺服器 (Github Runner)亦或是直接使用 Github 提供的机器执行 CI/CD、自动化脚本。
费用及限制
使用自己的机器 (Github Runner): 无特别费用,只有最高执行数、并行上限、部分 API 短期最大请求数量限制。
GitHub Free 提供基本 500 MB Storage (for CI/CD Artifact)、2,000 Minutes 一个月执行分钟数。
如果使用 Github 的 Windows 机器,消耗的分钟数等于实际分钟数 x 2
如果使用 Github 的 macOS 机器,消耗的分钟数等于实际分钟数 x 10
详细计价计算请参考 官方价格计算器 。
ZReviewTender _Minutes per month 消耗:约 120 分钟*
只需要跑在基础计价的 Linux 上,每次执行约消耗 ≤ 1 分钟,预设每 6 小时执行一次,一天花费 4 分钟,一个月约消耗 120 分钟,免费额度就很足够了。
ZReviewTender _Storage 消耗:0*
无使用 Artifact 储存资料,因此没有 Storage 的开销。
Slack
公司使用的内部通讯软体,会建立一个 Slack App 并透过这个 Slack App 身份转发 App 商城评价通知到指定的频道。
ZReviewTender x Github Action x Slack
我们使用 Github Action 来执行 ZReviewTender 脚本转发结果到 Slack,Github Repo(Action) 只是当载体使用,因此就算您的主专案不使用 Github 托管,依然可以简单照以下步骤完成 ZReviewTender 部署。🎉🎉🎉
我已经成功部署在 5 个不同公司的不同 Apps 并稳定、免费执行了至少 2 年以上。
优点:
免费 : ZReviewTender 是我制作的开源免费服务、部署在 Github Action 使用免费额度绰绰有余。 您不需要在每个月花钱买 App Review Bot 之类的月费评价机器人服务。
安全 :捞取评价用的凭证、金钥均安全存放在你的 Github Private Repo,除了你之外没有人有权限存取。 您不需要再冒著泄漏风险把重要的凭证、金钥上传给第三方服务使用; ZReviewTender 为开源专案,一切操作经的起大众检视。
可靠 : ZReviewTender 使用官方最新提供的 API 捞取评价资讯,相较以往其他服务使用 RSS 捞取评价,更准确、稳定可靠。
Buy me coffee ❤️❤️❤️
https://www.buymeacoffee.com/zhgchgli
Quick Start!🚀
整个设定步骤约需 30 分钟,但只需设定一次,除非凭证金钥有更换,不然可以永久免费稳定的运作。 🚀🚀🚀🚀🚀
Step 1. 建立 Slack App
如果您的组织内已有建立过有 chat:write
之类的发讯息权限 Slack App,可以直接复用,不用建立新的。
点击右上角「Create New App」。
选择:From scratch
输入 App Name:
ZReviewTender
或自定义 Slack App 名称选择目标安装的 Slack Workspace:请确认你选择的 Workspace,你有新增 Slack App 的权限。
Create App
新增 OAuth & Permissions Scopes: Slack app 建立完成后,先到「OAuth & Permissions」页签设定 Scopes。
选择「OAuth & Permissions」
下滑找到 Scopes Section
依序输入新增 ZReviewTender Slack App 必备的三个 Scopes:
chat:write
chat:write.public
links:write
Install App 回到 Install App 页签安装 Slack App 到 Workspace。
选择「Install App」
点击「Install to YOUR_WORKSPACE 」
点击「Allow」
安装完成后回到 Install App 页面就会出现 Slack App Bot User OAuth Token
,点击「Copy」复制, 记下来,稍后设定使用 。
建立预收到评价通知的频道:
Sidebar -> Channels -> Create -> Create channel
Name: 输入想要的频道名称
Visibility:
Public:对所有人公开,无需其他动作。
Private:私密频道, ⭐️⭐️⭐️ 需要把刚刚建立的 Slack App 加入:
Slack App 加入频道方式:
点击上方 #频道名称
点击「Settings」
点击「Add an App」
搜寻你刚建立的 Slack App 名称
点击「Add」
加入成功频道会有提示字词。 ZReviewTender joined.
⭐️⭐️⭐️这边有发现一个 Slack Bug,Slack App 刚建立完可能会搜寻不到,要等一阵子才会出现;可以先使用 Public Channel,Public Channel 不需要将 Slack App 加入就能使用。
取得 Channel ID: 最后一步,最重要的我们要取得 Channel ID 稍后设定要使用。
点击上方 #频道名称
About 最下方有一个 Channed ID 资讯
记下
Channel ID
,稍后设定使用
Slack 步骤完成。
— — —
其他补充:
你可以在「Basic Information」->「Display Information」编辑 Slack App 名称、icon:
修改完成后记得点右下角「Save Changes」才会储存。
如果 OAuth & Permissions Scopes 有新增需要点击「reinstall your app」重新安装才会生效:
Step 2. 产生 Apple App Store Connect API & Google Play Android Developer API 身份凭证
Apple App Store Connect API 身份凭证
iOS 比较容易,我们只需要从 App Store Connect 得到以下四个资讯即可:
Issuer ID:
App Store Connect -> Keys -> App Store Connect API
记下
Issuer ID
,稍后设定使用
Private Key ID & Private Key:
点击「+」新增按钮:
Name:
ZReviewTender
Access:
App Manager
Key ID
,稍后设定使用点击「Download API Key」保存下载下来的「
AuthKey_XXXXXXXXXX.p8
」档案,稍后设定使用。
App ID : (要捞取评价的目标 App ID)
App ID 可以在 App Store Connect -> App Store -> General -> App Information -> App ID
找到。
- 记下
App ID
,稍后设定使用
Google Play Android Developer API 身份凭证
Android 较为复杂,需要先从 App 专案所属的 Google Cloud Project 启用 API & 建立 Service Account (服务帐户) & 将服务帐户加入 Google Play Console 并赋予 App 权限。
选择 App 专案所属的 Google Cloud Project 或建立一个新 Project。
启用「Android Developer API」:
搜寻「Android Developer API」点击进入
选择「启用」
[此步骤可选] 您也可以同时启用「Cloud Translation API」:
启用后可以使用同一个 Service Account (服务帐户) 凭证,串接评价自动翻译功能
请注意:Cloud Translation API 并非免费,侦测语言、翻译都会产生费用!
请注意:Cloud Translation API 并非免费,侦测语言、翻译都会产生费用!
请注意:Cloud Translation API 并非免费,侦测语言、翻译都会产生费用!
建立 Service Account (服务帐户):
搜寻「IAM」
选择「IAM & Admin」
选择「服务帐户 (Service Account)」
选择「建立服务帐户 (Service Account)」
服务帐户名称:自行输入,可输入「
ZReviewTender
」or「Google Play Review Bot
」服务帐户 ID:自动带入,没特殊需求不用变更,这同时也会是你的 Service Account Email
点击「完成」
记下这组服务帐户 Service Account 的信箱地址:
列表页也会显示 Service Account Email 地址
记下
Service Account Email
,稍后设定使用
建立服务帐号 Service Account 金钥凭证:
重整列表页面,点击进入刚刚创建的 服务帐号 Service Account
点击「新增金钥」
点击「建立新的金钥」
金钥类型选择「JSON」
点击「建立」
保存下载下来的「
XXXX-XXXX.json
」档案,稍后设定使用
将服务帐户加入 Google Play Console 并赋予 要捞取评价的目标 App 权限:
点击「Users and permissions」
点击右方「Invite new users」
Email address 输入刚刚记下来的
Service Account Email
App permissions -> Add app
加入 要捞取评价的目标 App
点击「Invite user」 即可完成邀请,无需验证
取得 Google Play Console Developer ID & App ID & Package Name 资讯:
点击 要捞取评价的目标 App 进入 Dashboard
记下
Package Name
,稍后设定使用
复制 Dashboard 网址,从网址中找到:
3.其中 /developers/ XXX
就是你的 Developer ID
,记下这串数字 Developer ID,稍后设定使用
4.其中 /app/ XXX
就是你的 App ID
,记下这串数字 App ID,稍后设定使用
身份凭证设定完成。
Step 3. Github Action 部署、设定档填写
令人振奋的事是,我已经将繁琐的 Github Repo, Github Action 设定流程打包成 Repo Template & Marketplace Github Action,您只要照以下几个步骤就可以完成工作。
前往: ZReviewTender-deploy-with-github-action :
https://github.com/ZhgChgLi/ZReviewTender-deploy-with-github-action
Repository name:输入你想要的 Repo 名称
Private :因 Repo 会存放存取金钥, 务必设定为 Private Repo ⭐️⭐️⭐️
Private :因 Repo 会存放存取金钥, 务必设定为 Private Repo ⭐️⭐️⭐️
Private :因 Repo 会存放存取金钥, 务必设定为 Private Repo ⭐️⭐️⭐️
点击「Create repository」
ZReviewTender 作者、贡献者、ZhgChgLi 并不会因为您使用 ZReviewTender 造成的任何损失负责。
等待 Repository 建立:
再次确认建立的是 Private Repo:
Private :因 Repo 会存放存取金钥, 务必设定为 Private Repo ⭐️⭐️⭐️
Private :因 Repo 会存放存取金钥, 务必设定为 Private Repo ⭐️⭐️⭐️
Private :因 Repo 会存放存取金钥, 务必设定为 Private Repo ⭐️⭐️⭐️
启用 Github Actions 权限: Repo 建立完成后,因 Github 安全设定,要先去 Repo Settings 允许 Github Actions 执行。
Repo -> Settings
选择「Actions」 -> 「General」
Actions permissions 选择「Allow all actions and reusable workflows」
点击「Save」
Workflow permissions 选择「Read repository contents and packages permissions」
首次执行,初始化 ZReviewTender:
Repo -> Actions
选择「Init ZReviewTender」
选择「Run workflow」
点击「Run workflow」
重整页面
等待 init ZReviewTender
Action 完成:
如果出现 ❌ Error:请重新检查前面提到的 Github Actions 权限设定是否正确。
初始化成功回到 Repo 首页会出现两个新目录:
上传所需的凭证档案:
进入
/config
目录右上角「Add file」-> 「Upload files」
将 Step 2. 保存下来的 GCP Service Account
XXXX-XXXX.json
(for Android)与 App Store Connect 保存下来的AuthKey_XXXXXXXXXX.p8
(for iOS)一同上传。等待上传完成
选择「Commit directly to the main branch」
点击「Commit changes」
设定 Apple (iOS):
- 进入
config/
目录,点击apple.yml
档案
- 点击右上角「🖊️编辑」
编辑 apple.yml
,贴上以下内容并填入前几步记下来的资讯:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
platform: 'apple'
appStoreConnectP8PrivateKeyFilePath: './config/AuthKey_XXXXXXXXXX.p8' # APPLE STORE CONNECT API PRIVATE .p8 KEY File Path
appStoreConnectP8PrivateKeyID: 'Private Key ID' # APPLE STORE CONNECT API PRIVATE KEY ID
appStoreConnectIssueID: 'Issuer ID' # APPLE STORE CONNECT ISSUE ID
appID: 'App ID' # APP ID
processors:
- SlackProcessor: # Slack Processor, resend App Review to Slack.
class: "SlackProcessor"
enable: true # enable
slackTimeZoneOffset: "+08:00" # Review Created Date TimeZone
slackAttachmentGroupByNumber: "1" # 1~100, how many review message in 1 slack message.
slackBotToken: "Slack App Bot User OAuth Token" # Slack Bot Token, send slack message throught Slack Bot.
slackBotTargetChannel: "Target Channel ID" # Slack Bot Token, send slack message throught Slack Bot. (recommended, first priority)
slackInCommingWebHookURL: "" # Slack In-Comming WebHook URL, Send slack message throught In-Comming WebHook, not recommended, deprecated.
appStoreConnectP8PrivateKeyFilePath
: 输入./config/AuthKey_XXXXXXXXXX.p8
(Step 2. App Store Connect 保存下来的AuthKey_XXXXXXXXXX.p8
档案名称)appStoreConnectP8PrivateKeyID
: Step 2. App Store Connect 记下来的Private Key ID
appStoreConnectIssueID
: Step 2. App Store Connect 记下来的Issuer ID
appID
: Step 2. App Store Connect 记下来的目标捞取 App 的App ID
slackBotToken
: 输入 Step 1. 记下的Slack App Bot User OAuth Token
slackBotTargetChannel
: 输入 Step 1. 记下的 要传送到的Channel ID
编辑完成后点击右上角「Commit changes…」
选择「Commit directly to the main branch」
点击「Commit changes」
设定 Android:
- 进入
config/
目录,点击android.yml
档案
- 点击右上角「🖊️编辑」
编辑 android.yml
,贴上以下内容并填入前几步记下来的资讯:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
platform: 'android'
packageName: 'Package Name' # Android App Package Name
keyFilePath: './config/XXXX-XXXX.json' # Google Android Publisher API Service Account Credential .json File Path
playConsoleDeveloperAccountID: 'Developer ID' # Google Console Developer Account ID
playConsoleAppID: 'App ID' # Google Console App ID
processors:
- SlackProcessor: # Slack Processor, resend App Review to Slack.
class: "SlackProcessor"
enable: true # enable
slackTimeZoneOffset: "+08:00" # Review Created Date TimeZone
slackAttachmentGroupByNumber: "1" # 1~100, how many review message in 1 slack message.
slackBotToken: "Slack App Bot User OAuth Token" # Slack Bot Token, send slack message throught Slack Bot.
slackBotTargetChannel: "Target Channel ID" # Slack Bot Token, send slack message throught Slack Bot. (recommended, first priority)
slackInCommingWebHookURL: "" # Slack In-Comming WebHook URL, Send slack message throught In-Comming WebHook, not recommended, deprecated.
packageName
: Step 2. Google Play Console 后台记下来的Package Name
keyFilePath
: 输入./config/XXXX-XXXX.json
(Step 2. GCP IAM 保存下来的XXXX-XXXX.json
Service Account 金钥档案名称)playConsoleDeveloperAccountID
: Step 2. Google Play Console 后台记下来的Developer ID
playConsoleAppID
: Step 2. Google Play Console 后台记下来的App ID
slackBotToken
: 输入 Step 1. 记下的Slack App Bot User OAuth Token
slackBotTargetChannel
: 输入 Step 1. 记下的 要传送到的Channel ID
编辑完成后点击右上角「Commit changes…」
选择「Commit directly to the main branch」
点击「Commit changes」
设定完成! 🚀🚀🚀🚀
验证设定是否成功:
我们可以手动执行一次,确认设定无误。
Repo -> Actions
选择「ZReviewTender」
选择「Run workflow」
点击「Run workflow」
重整页面
等待 ReviewTender
Action 完成:
验证成功🎉🎉🎉🎉
如果出现 ❌ Error、Slack Channel 未收到启动讯息:请重新检查前面设定档案内容是否正确。
完成 🎉🎉🎉
现在你可以依靠这个免费可靠的 App 评价机器人时刻关注使用者的最新评价了!
Buy me coffee ❤️❤️❤️
https://www.buymeacoffee.com/zhgchgli
其他设定
加上过滤功能
只转发符合条件的评价。
1
2
3
4
5
6
- FilterProcessor:
class: "FilterProcessor"
enable: true # enable
keywordsInclude: [] # keywords you want to filter out
ratingsInclude: [] # ratings you want to filter out
territoriesInclude: [] # territories you want to filter out (territory for Apple e.g. TWN)
- 您只要在
/config/apple.yml
或/config/android.yml
的processors
区块加上FilterProcessor
设定。
加上自动翻译功能
将非您语言的评价自动使用 Google Cloud Translation API 进行翻译 (需消耗费用)。
请先确定 Step 2. 建立的 Service Account 所属 GCP Project 有启用「Cloud Translation API」
apple.yml
与android.yml
设定有一些不同
apple.yml:
1
2
3
4
5
6
- GoogleTranslateProcessor: # Google Translate Processor, will translate review text to your language, you can remove whole block if you don't needed it.
class: "GoogleTranslateProcessor"
enable: true # enable
googleTranslateAPIKeyFilePath: './config/XXXX-XXXX.json' # Google Translate API Service Account Credential .json File Path
googleTranslateTargetLang: 'zh-TW' # Translate to what Language
googleTranslateTerritoriesExclude: ["TWN","CHN"] # Review origin Territory that you don't want to translate. (territory for Apple e.g. TWN)
./config/XXXX-XXXX.json
(Step 2. GCP IAM 保存下来的XXXX-XXXX.json
Service Account 金钥档案名称)
android.yml:
1
2
3
4
5
6
- GoogleTranslateProcessor: # Google Translate Processor, will translate review text to your language, you can remove whole block if you don't needed it.
class: "GoogleTranslateProcessor"
enable: true # enable
googleTranslateAPIKeyFilePath: './config/XXXX-XXXX.json' # Google Translate API Service Account Credential .json File Path
googleTranslateTargetLang: 'zh-TW' # Translate to what Language
googleTranslateTerritoriesExclude: ["zh-Hant","zh-Hans"] # Review origin Territory (language) that you don't want to translate. (language for android e.g. zh-Hant, en)
./config/XXXX-XXXX.json
(Step 2. GCP IAM 保存下来的XXXX-XXXX.json
Service Account 金钥档案名称)
完整组合范例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
platform: 'android'
packageName: '' # Android App Package Name
keyFilePath: '' # Google Android Publisher API Service Account Credential .json File Path
playConsoleDeveloperAccountID: '' # Google Console Developer Account ID
playConsoleAppID: '' # Google Console App ID
processors:
- FilterProcessor:
class: "FilterProcessor"
enable: true # enable
keywordsInclude: [] # keywords you want to filter out
ratingsInclude: [] # ratings you want to filter out
territoriesInclude: [] # territories you want to filter out (territory for Apple e.g. TWN)
- GoogleTranslateProcessor: # Google Translate Processor, will translate review text to your language, you can remove whole block if you don't needed it.
class: "GoogleTranslateProcessor"
enable: true # enable
googleTranslateAPIKeyFilePath: '' # Google Translate API Service Account Credential .json File Path
googleTranslateTargetLang: 'zh-TW' # Translate to what Language
googleTranslateTerritoriesExclude: ["zh-Hant","zh-Hans"] # Review origin Territory (language) that you don't want to translate. (language for android e.g. zh-Hant, en)
- SlackProcessor: # Slack Processor, resend App Review to Slack.
class: "SlackProcessor"
enable: true # enable
slackTimeZoneOffset: "+08:00" # Review Created Date TimeZone
slackAttachmentGroupByNumber: "1" # 1~100, how many review message in 1 slack message.
slackBotToken: "" # Slack Bot Token, send slack message throught Slack Bot.
slackBotTargetChannel: "" # Slack Bot Token, send slack message throught Slack Bot. (recommended, first priority)
slackInCommingWebHookURL: "" # Slack In-Comming WebHook URL, Send slack message throught In-Comming WebHook, not recommended, deprecated.
调整完毕一样照以下步骤储存 .yml
:
编辑完成后点击右上角「Commit changes…」
选择「Commit directly to the main branch」
点击「Commit changes」
执行参数设定
您可以编辑 ZReviewTender.yml
档案设定执行参数。
Repo -> Actions
点击「ZReviewTender」
点击「
ZReviewTender.yml
」点击右上角「🖊️编辑」
1
2
3
4
5
6
7
8
9
10
11
12
13
14
name: ZReviewTender
on:
workflow_dispatch:
schedule:
- cron: "15 */6 * * *" #check new review every 6 hour.
jobs:
ZReviewTender:
runs-on: ubuntu-latest
steps:
- name: ZReviewTender Automatic Bot
uses: ZhgChgLi/ZReviewTender@main
with:
command: '-r'
调整检查频率 (多久爬取转发一次新评价?)
调整 cron: "15 */6 * * *"
里的设定值。
参数使用 Crontab 表示,您可以使用 以下网站 产生想要的设定参数:
调整执行脚本
调整 command: "-r"
里的设定值。
-r
: 同时执行 Android 和 Apple (iOS) 评价检查-a
: 纸执行 Apple (iOS) 评价检查-g
: 只执行 Android 评价检查
调整完毕:
编辑完成后点击右上角「Commit changes…」
选择「Commit directly to the main branch」
点击「Commit changes」
暂时停止检查
Repo -> Actions
选择「ZReviewTender」
点击右方「…」
选择「Disable workflw」
问题回报及功能建议
如果您有任何功能建议或问题、Bug,请前往以上 Github Repo 建立 Issue 回报,谢谢。
进阶使用及开发故事
有任何问题及指教欢迎 与我联络 。
本文首次发表于 Medium (点击查看原始版本),由 ZMediumToMarkdown 提供自动转换与同步技术。