I implemented simple posting app reviews to slack with Elixir-Slack(version 0.2.0) and Reporter(version 0.2.5).
- Base implementation to handle post to slack with Elixir-Slack
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| defmodule MyBotEx.Client.Slack do | |
| use Slack | |
| # alias MyBotEx.Client.Slack.Action, as: SlackAction | |
| alias MyBotEx.Client.Slack.Reporter, as: AppReporter | |
| # get ids from config.exs | |
| @droid_package Application.get_env :reporter, :droid_package | |
| @droid_locale Application.get_env :reporter, :droid_locale | |
| @app_id Application.get_env :reporter, :app_id | |
| @app_locale Application.get_env :reporter, :app_locale | |
| # Elixir-Slack | |
| def handle_connect(slack, state), do: {:ok, state} | |
| # Elixir-Slack | |
| # Post message to slack | |
| def handle_message(message = %{type: "message"}, slack, state) do | |
| reply(:answer, message, slack) | |
| {:ok, state} | |
| end | |
| # Elixir-Slack | |
| def handle_message(_message, _slack, state), do: {:ok, state} | |
| # send each reviews to slack | |
| defp reply(:answer, message, slack) do | |
| AppReporter.google_play_review(@droid_package, @droid_locale) | |
| |> Enum.each(&send_message(&1, message.channel, slack)) | |
| AppReporter.app_store_revew(@app_id, @app_locale) | |
| |> Enum.each(&send_message(&1, message.channel, slack)) | |
| end | |
| defp reply(_, _, _), do: IO.inspect "nothing" | |
| end |
- Use configurations to set target
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| use Mix.Config | |
| config :reporter, | |
| droid_package: "com.android.chrome", | |
| droid_locale: "en", | |
| get_count_google: 5, | |
| app_id: "375380948", | |
| app_locale: "en", | |
| get_count_apple: 5 |
- Getting reviews with Reporter
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| defmodule MyBotEx.Client.Slack.Reporter do | |
| import Reporter | |
| @get_count_google Application.get_env :reporter, :get_count_google | |
| @get_count_apple Application.get_env :reporter, :get_count_apple | |
| def google_play_review(app_package, locale) do | |
| Reporter.google_play!(app_package, locale) | |
| |> Reporter.GooglePlay.review_summaries | |
| |> Enum.take(@get_count_google) | |
| |> List.foldr([], fn (review, acc) -> | |
| [":green_apple: " <> format(review)] ++ acc | |
| end) | |
| end | |
| def app_store_revew(app_id, locale) do | |
| Reporter.app_store_rss_json!(app_id, locale) | |
| |> Reporter.AppStore.review_summaries | |
| |> Enum.take(@get_count_apple) | |
| |> List.foldr([], fn (review, acc) -> | |
| [":apple: " <> format(review)] ++ acc | |
| end) | |
| end | |
| defp format(review) do | |
| ~s""" | |
| author: #{review["author"]} | |
| rating: #{review["rating"]} | |
| title: #{review["title"]} | |
| body: #{review["body"]} | |
| """ | |
| end | |
| end |
Example
