のえら

技術備忘とかメモとか.間違いはつっこんでいただきたい所存.アフィリエイトはやっていません.

WordPress で何かアクションがあった時に slack に通知したい

概要

WordPress で何らかのアクション(「投稿」を「公開」したとき、など)に Slack 内の任意のチャンネルに通知する手順。

手順

Slack で Incoming WebHooks URL を生成する

Slack に管理者権限でログインし Incoming WebHooks URL を発行する。

この時、通知先の指定が可能だが、プラグインの設定でも通知先を指定できる。

※この URL に対して POST すると slack に通知が飛ぶので、外部に漏れないよう注意すること( URL を再発行することも可能)

WordPress に Slack プラグインをインストールする

WordPress に管理者権限でログインし、メニュー>プラグイン>新規追加 から、キーワード「slack」で検索、「Rock The Slackbot」をインストールする。

インストール完了後、メニュー>プラグイン>インストール済みプラグイン から、Rock The Slackbot を有効化すると使用できるようになる。

補足:

Rock The Slackbot は git で公開されている。

github.com

プラグインの設定をする

  1. メニュー>ツール>Rock The Slackbot をクリック
  2. 画面中央の「Let's get this party started」をクリック
  3. 通知設定画面が表示されるので、以下の項目を適宜設定、Save Webhook をクリック

設定できる項目は以下の通り。
*ハイフンの部分は確認中

設定名 設定内容
Name of Webhook この通知設定の名前
Name of Slack Account -
Webhook URL Slackで発行した通知用URL
Send To Slack Channel(s) or Direct Message(s) 通知先をwebhookで指定したチャンネル以外に指定したい場合は入力(空白の場合、デフォルトのチャンネルに通知される)
Post Message As Which Slack Username -
Icon Emoji For Message -
Use Custom URL For Message Icon -
The WordPress Icon -
Exclude Post Types From Notifications 指定した投稿タイプを通知対象から除外する
When Slack Notifications Fail 通知が失敗した時に知らせるメールの送信先
Notification Events 何をした時に通知するかを設定する(以下の項目から選択)
Content
When a post is published 投稿が公開
When a post is unpublished 投稿が非公開
When a post is drafted 下書きを作成
When a post is pending review 投稿がレビュー待ち※レビュー待ち・・・権限「寄稿者」が記事を投稿したあと、公開に承認が必要な状態
When a post is scheduled 自動投稿(予約投稿)が作成
When a post's content is updated 投稿内容が更新
When a post is deleted 投稿が削除
When a post is trashed 投稿がゴミ箱へ移動
When a 404 error is thrown 404(Not found)エラーを検知
Comments
When a comment is added コメントを追加
When a comment is unapproved コメントを非承認
When a comment is approved コメントを承認
When a comment is marked as spam コメントがスパム判定された
When a comment is trashed コメントを削除(ゴミ箱)
Menus
When a menu item is deleted メニューアイテムを削除
Media
When media is added メディアを追加
When media is edited メディアを編集
When media is deleted メディアを削除
Users
When a user is added ユーザーを追加
When a user is deleted ユーザーを削除
When a user's role has changed ユーザーの権限を変更
Updates
When a WordPress core update is available WordPress 本体のアップデートが利用可能
When WordPress core is updated WordPress 本体がアップデートされた
When a plugin update is available プラグインのアップデートが利用可能
When a plugin is updated プラグインがアップデートされた
When a theme update is available テーマのアップデートが利用可能
When a theme is updated テーマがアップデートされた
Deactivate チェックすると、設定は残したまま、このwebhookを無効にする

その他

  • Slack に通知される情報の中には旧ステータスなどの内容も含まれるので、削除したい場合はプラグインPHP を直接いじる必要がありそう。
  • 通知のフックは複数登録ができるため、上記投稿通知とは別に、例えば「コメントが追加された」「テーマのアップデートが利用可能」という管理者向けのイベントをまとめて slack の任意のユーザへと通知することも可能。

チャレンジ失敗の原因と攻略「猫の品種を認識する Cat Rescue アプリケーションの構築」編 その2

プロジェクト「猫の品種を認識する Cat Rescue アプリケーションの構築」の単元「Einstein Vision Apex ラッパーのインストール」から。 

trailhead.salesforce.com

チャレンジ失敗メッセージは以下の通り。

Challenge Not yet complete... here's what's wrong: 
Could not authorise with Einstein Vision. Please validate your credentials.

まず、一つ前の単元「Einstein プラットフォームアカウントの作成 」にそって Einstein アカウントを作成・認証証明書を登録・ファイルをアップロードする。 ここでのチャレンジは成功しているので、手順はOKだと思う。

セクション「未管理パッケージをインストールする」で Trailhead の Playground に入れていることを確認済み。

ので、おそらく問題は次のセクション「Einstein 認証ユーザを設定する」にあるっぽい。

  1. [Setup (設定)] の [Home (ホーム)] タブから、[Quick Find (クイック検索)] ボックスに「Custom Settings」(カスタム設定) と入力し、[Custom Settings (カスタム設定)] を選択します。
  2. [Einstein AI Settings (Einstein AI 設定)] の横の [Manage (管理)] をクリックします。
  3. [Default Organizational Level Value (デフォルトの組織レベルの値)] の上の [New (新規)] をクリックします。
  4. [Einstein EMail (Einstein メール)] 項目に、Einstein プラットフォームアカウントにサンアップしたときに使用したメールアドレスを入力します。
  5. [Save (保存)] をクリックします。

4のメールアドレスには Playground のアカウントで Einstein のアカウントを作成したので、ユーザ名@playful-hoge-nnnnnn.com を入力していたが、組織で使用しているメールアドレスを入力したら解決。 メールアドレスを入れるべきところに Playground のユーザ名を入力していたことが原因でした。

チャレンジ失敗の原因と攻略「猫の品種を認識する Cat Rescue アプリケーションの構築」編

今回はプロジェクト「猫の品種を認識する Cat Rescue アプリケーションの構築」の単元「Lightning アプリケーションとカスタムオブジェクトの作成」から。

trailhead.salesforce.com

カスタムオブジェクトを作成後、セクション「猫と人のレコードを作成する」の手順に沿って、サンプルデータを登録する。

  1. [Cats (猫)] タブを選択して、[New (新規)] をクリックします。
  2. [Cat Name (猫の名前)] に「Elvis」と入力します。
  3. [Save & New (保存 & 新規)] をクリックします。
  4. [Cat Name (猫の名前)] に「Amanda」と入力します。
  5. [Save & New (保存 & 新規)] をクリックします。
  6. [Cat Name (猫の名前)] に「Amanda」と入力します。
  7. [Save (保存)] をクリックします。

ステップを確認すると、以下のメッセージが。

Challenge Not yet complete... here's what's wrong:
Please validate that three cats exist with the names 'Elvis', 'Marissa', and 'Amanda'.

サンプルデータの登録で'Amanda'が2つ登場しているが、1つは'Amanda'ではなく'Marissa'で登録しましょう。

Trailhead は日本語訳が怪しかったり、チャレンジのテキストに誤りがあったり、ちょいちょい本筋とは関係ないところにもハマりどころがあるので、細かいところでも、今後の自分のためにメモしておくことにします。

SQL PowerArchitect を MacOS で使う

概要

プロジェクトで ER 図を見るのに PowerArchitect を使用しているのだけども古いバージョンの Java が必要だったのでメモ

環境

MacOS: High Sierra(10.13.3)

手順

ここからダウンロード、インストールする https://code.google.com/archive/p/power-architect/

開くと、以下のメッセージが表示される。

"PowerArchitect"を開くには、以前のJava SE 6 ランタイムをインストールする必要があります。

→「詳しい情報」をクリックすると Java ランタイムの DL ページに遷移する

MacOS 用 java6 ランタイム https://support.apple.com/kb/DL1572?locale=ja_JP

ページ上部の「ダウンロード」からダウンロード→インストール

f:id:noterr0001:20180322144555p:plain

1ヶ月をミリ秒に換算して使いたい(Java編)

*最大31日としたいので日数は31日固定

1日 = 24時間
1時間 = 60分
1分 = 60秒
1秒 = 1000ミリ秒

31 * 24 * 60 * 60 * 1000

期待している結果は 2678400000 だったがユニットテストを実行してみると -1616567296 になっていた。

よくみると IntelliJ で警告が表示されていることに気がつく。

Numeric overflow expression This inspection checks for expressions which overflow during computation, i.e.: a = 1.0/0.0;

Integer は 2147483647 が最大値なので、オーバーフローを起こしていた。

最大値が収まる Long 型にするため、乗算する際にミリ秒を L で Long 型にして、計算結果を暗黙的にキャストする。

31 * 24 * 60 * 60 * 1000L

rails new でバージョン指定したのに上のバージョンになって困った話

初歩的なミスなのですが。

バージョンを指定して新規プロジェクトするのに、以下のコマンドを実行。

rails _5.0.2_ new sample

(中略)

-> Installing rails 5.0.6

>>5.0.6<<

!?

rails new 実行すると続けて bundle install が走るため Gemfile にデフォルトで記述される 5.0.2「以上」が反映されてしまう。

bundle install をスキップして、バージョンを指定後 bundle install すればOK

rails _5.0.2_ new sample --skip-bundle
cd sample
vi Gemfile

gem 'rails', '~> 5.0.2'

gem 'rails', '= 5.0.2'

にする

bundle install --path=vendor/bundle

macOS Sierra(10.12.6) に rails をインストールした

開発用に MacBook Air を購入したので rails をインストールしたときのメモを残す。
今回は以下のツール・環境で構築した。

homebrew のインストール

homebrew をインストールするのに XCode(Command Line Tools for Xcode) をインストールしなきゃいけないなー、と思っていたら、以下のコマンドを叩いて homebrew をインストールすると、実行途中で Xcode ないやで?インストールする?と聞かれるんですね。

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
# 確認
brew doctor
rbenv のインストール
brew update
brew install rbenv ruby-build 
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile
ruby のインストール
# ruby のバージョン確認
rbenv install -l
# 2.4.2をインストール
rbenv install 2.4.2
# 環境全体で使用するバージョンを設定
rbenv global 2.4.2
# インストールの確認
ruby -v
rails のインストール
gem install rails

デフォルトでインストールされたもの

Done installing documentation for i18n, thread_safe, tzinfo, concurrent-ruby, activesupport, rack, rack-test, mini_portile2, nokogiri, crass, loofah, rails-html-sanitizer, rails-dom-testing, builder, erubi, actionview, actionpack, activemodel, arel, activerecord, globalid, activejob, mime-types-data, mime-types, mail, actionmailer, nio4r, websocket-extensions, websocket-driver, actioncable, thor, method_source, railties, bundler, sprockets, sprockets-rails, rails after 70 seconds

bundler のインストール
gem install bundler
設定の反映
rbenv rehash
source ~/.bash_profile

# インストールの確認
rails -v
> Rails 5.1.4