PowerCMS™

アルファサード株式会社では、一緒に働く仲間を募集しています。Webディレクター積極採用中!

PowerCMS ブログ

ホーム > PowerCMS ブログ

SendGridのWeb APIを利用して簡単にメールを送信することができるPerlモジュール Mail::SendGrid::WebAPI を紹介します。

SendGridのAPIドキュメントは以下にあります。

PowerCMSのメールマガジン機能の予約送信機能は、SMTPを経由して1件ずつキューに入れて順次送信する仕様となっているため、1件目の送信と最後の送信にそれなりのタイムラグが生じますが、Web APIに send_at パラメタを付けて送信することで、スケジュール配信を SendGridに任せてしまうことが可能です(MailMagazineプラグインの次期バージョンアップで、この機能が追加される予定です)。

Mail::SendGrid::WebAPI はPowerCMSのMailMagazineプラグインのexlibに含まれていますが、以下からダウンロードしていただけます。

メールを送信する最小限のサンプルは以下のようなものです。


    my %args = (
        method => 'POST',
        api_key => 'your.sendgrid.client.secret.key',
        version => 'v3',
    );
    my $sendgrid = Mail::SendGrid::WebAPI->new( %args );
    my $path = 'mail/send';
    my $params = { 
        personalizations => [
            { to => [ { email => 'junnama@alfasado.jp' } ],
              subject => 'Hello, World!' }
        ],
        from => { email => 'contact@alfasado.jp' }
        content => [ { type => 'text/plain', value => 'Hello, World!' } ],
    };
    my $res = $sendgrid->request( $path, $params );

$params に指定する内容

  • personalizationsに送信先アドレス、件名などを指定。配列にすることで1000件までの同時送信が可能です。
  • from にFromアドレス。toとfromは{ email => 'contact@alfasado.jp' , name => 'PowerCMS問い合わせ'} のようにすることで、名前付きでの指定が可能です。
  • content にtype(text/plainまたは text/html)、value(メール本文)を指定します。
  • request メソッドでmail/send エンドポイントに対して、リクエストを送信します。$sendgrid->request( 'mail/send ', $params );

追加パラメタで予約送信/予約をキャンセル可能にする

※ キャンセル可能にするためには、APIに対して「Scheduled Sends」権限が必要です。

  • batch_id => 'mail/batch' エンドポイントを叩いて得た値を予約送信メールに付けておく
  • send_at => 送信時刻をUnixタイムスタンプで指定する

少し長くなりますが、サンプルコードです。


    my %args = (
        method => 'POST',
        api_key => $api_key,
        version => 'v3',
    );
    my $sendgrid = Mail::SendGrid::WebAPI->new( %args );
    my $path = 'mail/batch';
    my $res = $sendgrid->request( $path );
    if ( $res->is_error ) {
       # Error
    } else {
        my $json = MT::Util::from_json( $res->content );
        my $batch_id =  $json->{ batch_id }; # 後のキャンセル用にbatch_idを取得
        my $path = 'mail/send';
        my $from = 'アルファサード <contact@alfasado.jp>';
        my $to   = '野田 純生 <junnama@alfasado.jp>';
        if ( MT::Util::is_valid_email( $from ) || MT::Util::is_valid_email( $to ) ) {
            # Error
        }
        my $content_type = 'text/plain';
        my $subject = 'メールの件名';
        my $body = 'メールの本文';
        my $send_at = time() + 3600;
        if ( $from =~ m/(^.*?)<(.*?)>$/ ) {
            my $name  = $1;
            my $email = $2;
            $name =~ s/^\s*(.*?)\s*$/$1/;
            $from = { email => $email, name => $name };
        } else {
            $from = { email => $from };
        }
        if ( $to =~ m/(^.*?)<(.*?)>$/ ) {
            my $name  = $1;
            my $email = $2;
            $name =~ s/^\s*(.*?)\s*$/$1/;
            $to = { email => $email, name => $name };
        } else {
            $to = { email => $to };
        }
        my $params = { 
            personalizations => [
                { to => [ $to ],
                  subject => $subject } # 配列にすることで1000件まで送信可能
            ],
            content => [ { type => $content_type, value => $body } ],
            from => $from,
            batch_id => $batch_id,
            send_at => $send_at
        };
        my $res = $sendgrid->request( $path, $params );
        if ( $res->is_error ) {
            # Error
        } else {
            # Do Something.
        }
    }

予約した送信をキャンセルする

送信予約したメールをキャンセルするには、user/scheduled_sendsエンドポイントに batch_idを付けてキャンセルリクエストを送信します。当たり前ですが、送信時刻を過ぎてしまうとキャンセルはできません。


    my %args = (
        method => 'POST',
        api_key => $api_key,
        version => 'v3',
    );
    my $sendgrid = Mail::SendGrid::WebAPI->new( %args );
    my $path = 'user/scheduled_sends';
    my $params = { batch_id => $batch_id, status => 'cancel' };
    my $res = $sendgrid->request( $path, $params );
カテゴリー
技術情報

PowerCMSにJIS X8341-3(Webアクセシビリティ)対応を支援する新機能をリリースしました。これまでもWebアクセシビリティには力を入れてきましたが、今回のリリースで「デザイン・テンプレート実装(新規にサポート)」→「データ投入」→「試験」→「運用」という幅広い範囲でのWebアクセシビリティ向上をトータルに支援できるようになりました。

  • PowerCMS JIS X8341-3対応を強力にサポートするWebアクセシビリティチェック機能をさらに強化

この記事では、新機能だけでなく、これまでPowerCMSで提供されている、Webサイトのアクセシビリティを高めるためのサポート機能についてまとめてご紹介します。

新機能「デザインテンプレートの評価」

テンプレートの作成・編集画面に「JIS X 8341-3 検証」チェックボックスが追加され、プレビュー時にブラウザのレンダリング結果のWebアクセシビリティチェック結果を自動で表示します。ユーザーの言語設定が日本語の場合、メッセージ、結果からのリンク先などはすべて日本語で確認することができます(この機能はSquiz Pty LtdのソフトウェアHTML_CodeSniffer*を日本語化してPowerCMSのプラグイン化したものです)。

* HTML_CodeSniffer - Copyright(c)2012 Squiz Pty Ltd.

HTML_CodeSnifferプラグインのインストールと設定

以下からプラグインをダウンロードしてください。

以下のフォルダをそれぞれアップロードします。

  • options/plugins/HTML_CodeSniffer/フォルダ
  • options/mt-static/plugins/HTML_CodeSniffer/フォルダ

設定はウェブサイト・ブログのプラグイン設定で行います。

HTML_CodeSnifferプラグインの設定

設定項目は1つで、等級をA、AA、AAAから選択します。設定のない場合のデフォルトは「AA」となります。

デザイン・テンプレートの試験を行なう

試験はテンプレートの作成・編集画面から行います。「プレビュー」ボタンの横に表示される「IS X8341-3検証」チェックボックスにチェックを入れ、「プレビュー」ボタンをクリックすると、プレビューウィンドウ内に試験結果が表示されます。

テンプレートの評価

詳細については「レポートを見る」ボタンをクリックしてください。レポートの各項目をクリックすると、画像のように、どの箇所が対象になっているかを示してくれます。

レポートの表示

達成基準、推奨される実装方法の箇所をクリックするとガイドラインのページへリンクします(日本語に訳されたウェブアクセシビリティ基盤委員会(WAIC)のサイトへのリンクになっています)。

ページ/記事の試験を行なう

この機能は既存のPowerCMS 8341の機能となります。テンプレートの評価がHTML全体を評価するのに対し、ページ/記事の試験は、評価する範囲を限定して試験が行えることが違い・特徴となります。

アクセシビリティ検証のボタン群

設定は同じくウェブサイト・ブログのプラグイン設定で行いますが、一部の設定項目はシステムプラグインの設定値を継承することもできます。

インストール・設定、利用方法については関連する過去の記事を参照ください。

AIによる画像解析・OCRを利用したaltテキストの推奨値入力補助機能

この機能も既存のPowerCMS 8341の機能ですが、PowerCMS 5になって追加された新しい機能です。

このページから内容の抜粋を引用します。

Alt サジェストのサンプル画像

画像分析の2つのモード「画像解析」と「テキスト抽出 ( OCR ) 」

Alt サジェストでは「画像解析」と「テキスト抽出 ( OCR ) 」の2つのモードがあります。

画像解析モ-ド
AI が解析したテキストを提案します。
※ 標準では英語となります。CMS 設定で翻訳設定することでテキストを自動翻訳する事が可能です。
テキスト抽出 ( OCR )
画像内のテキストを読み取ります。

例えば次の画像 ( 「アルファサード大阪オフィスの魅力」内の画像 ) に対して Alt サジェスト機能を利用すると下記の様な提案テキストとなります。

アルファサード 採用

画像解析モ-ド

「カメラにポーズ観衆の前で立っている人のグループ」

画像解析モ-ドの結果「カメラにポーズ観衆の前で立っている人のグループ」

テキスト抽出 ( OCR ) モード

「アルファサード採用検索」

テキスト抽出 ( OCR ) モードの結果「アルファサード採用検索」


「やさしい日本語」化を支援する機能

「やさしい日本語」は、かんたんな表現、一文を短く、漢字にふりがなを振ってわかち書きをするなどして、日本語に不慣れな外国人や知的障害者にもわかりやすくした日本語のことです。

もともとは災害時の情報伝達のために考えられましたが、外国人観光客の増加や出入国管理法改正案の閣議決定、知的障害を持つ人にもやさしい日本語が有用であることがわかってきたことなどから注目を集めています。

PowerCMSには、CMSとして初、他のCMSにはない「やさしい日本語」化を支援する機能を提供しています。

やさしい日本語作成支援機能が提供する画面

音声読み上げに適した形にテキストを自動整形する Accessibility プラグイン

最後に、PowerCMSの初期から提供されている、テンプレートに設定を指定することによって音声読み上げに適した形にテキストを自動整形する機能についてご紹介します。

  • 機種依存文字の正規化されたテキスト化
  • 英数字の半角統一
  • 通貨、日付表記を読み上げに適したフォーマットに変換
  • 整形のための空白文字を削除

アルファサードでは、設立当初から一貫してWebアクセシビリティに取り組んできました。ツールの提供だけでなく、WebサイトのJIS X 8341-3対応全般についてのご相談を積極的に承りますので、お問い合わせのページからお気軽にお問い合わせください。

カテゴリー
PowerCMS 5PowerCMS 8341プラグイン技術情報

「やさしい日本語」は、かんたんな表現、一文を短く、漢字にふりがなを振ってわかち書きをするなどして、日本語に不慣れな外国人や知的障害者にもわかりやすくした日本語のことです。

もともとは災害時の情報伝達のために考えられましたが、外国人観光客の増加や出入国管理法改正案の閣議決定、知的障害を持つ人にもやさしい日本語が有用であることがわかってきたことなどから注目を集めています。

アルファサードではこの度、導入サイト数3000サイトを超えるエンタープライズ向けCMSである「PowerCMS」向けの新規機能として、CMSとしては初の「やさしい日本語での情報発信支援機能」を追加しました。PowerCMSをご利用の方は、すべて無償でご利用いただくことができます。

この機能は、アルファサードのWebサービス「伝えるウェブ」が提供するAPIを利用しています。

伝えるウェブ

インストール

以下からプラグインをダウンロードしてください。

EJHelperフォルダをプラグインディレクトリにアップロードします。PSGI環境の場合は、プロセスを再起動するか、「システム」→「全般設定」の画面を開き、設定を保存してください。

※ 外部APIを利用するため、Webサーバーから外部へHTTP(HTTPS)通信できる必要があります。

プラグインの設定

「システム」→「プラグイン設定」→「EJHelper」の設定を開きます。

EJJHelperプラグインの設定画面

項目名説明設定例
エンドポイント(アクセストークン)APIのURLを指定します。エンタープライズ契約(サーバーインストールタイプ)以外では設定変更の必要はありません。https://tsutaeru.cloud/token.php
エンドポイント(評価と翻訳)APIのURLを指定します。エンタープライズ契約(サーバーインストールタイプ)以外では設定変更の必要はありません。https://tsutaeru.cloud/easy-japanese-api.php
クライアントIDオプションプラン「辞書のメンテナンス機能」を利用している場合、当社から提供されたクライアントIDを入力してください。無償プランでは設定変更の必要はありません。
シークレット・キーオプションプラン「辞書のメンテナンス機能」を利用している場合、当社から提供されたシークレット・キーを入力してください。無償プランでは設定変更の必要はありません。
除外対象鉤括弧(「」<>など)で囲まれたテキストを翻訳・難易度評価の対象外とするとき、チェックを入れてください。この設定は評価と翻訳ダイアログ内で変更することができます。
目標レベル目標とする文章の「やさしさ」レベルを設定します。この設定によって翻訳結果や難易度評価の結果は変わりません(ハイライト表示されるテキストのレベルが変更されます)。この設定は評価と翻訳ダイアログ内で変更することができます。レベル3

利用方法

やさしい日本語化支援項目

  • PowerCMSの記事・ページの編集画面に「やさしい日本語化支援」項目が追加されます。
  • 対象とするフィールドを選択し、「テキストの評価と翻訳」ボタンをクリックすると、結果をダイアログ表示します。
  • サポートされるフィールドは「タイトル」「本文」「続き」「概要」「キーワード」欄と、テキスト型、テキスト複数行型、リッチテキスト型のカスタムフィールドです。
  • デフォルトでは「本文」欄が選択されます。
  • 対象フィールドを選択して「テキストの評価と翻訳」ボタンをクリックしてください。

結果の見かた

やさしい日本語作成支援機能が提供する画面

画面の左側にオリジナルの文章、画面の右側にAIによる言い換え提案テキストが表示されます。

表示されるのは上から順番に以下の通りです。

オリジナルのテキストと、翻訳結果(言い換え提案テキスト)の対比

言い換えられた部分について、赤い文字・ボールド書体で表示されるため、どこが言い換えられたかがひと目でわかります。

オリジナルのテキストと、翻訳結果それぞれの文中の単語の難易度

固有名詞や引用部・台詞・用語等以外の文中の単語の難易度レベルを5段階で表示します。登録のない単語は「級外」とされます。 数字が大きいほど簡単な単語で、数字が小さいほうが難しい単語です。設定したレベルより難易度の高い単語は、反転ハイライト表示されます。

※ 自動処理を行いますので、単語の区切りや用語の解釈について、結果が正確でない場合があります。

オリジナルのテキストと、翻訳結果それぞれの文章+ふり仮名

オリジナルのテキストと、翻訳結果それぞれの文章に自動的にふり仮名を追加したものを表示します。 翻訳結果については、分かち書きを行い、単語の区切りをスペースで分割します。 ふり仮名付きテキストは、リッチテキストエディタにそのままコピー&ペーストすることもできます。

※ 自動処理を行いますので、ふりがなや分かち書きについて、結果が正確でない場合があります。

それぞれの結果については、テキストエリアの文章を修正して、再テストすることができます。結果を見ながら文章の「やさしさ」を向上させ、CMS上の文章を修正していくことで、やさしい日本語に近づけていくことができます。


有償オプションサービスについて

やさしい日本語関連のサービスとして、以下の有償オプションサービスも提供しています。

  • 辞書のメンテナンス機能(※1)
  • ウェブページ全体のやさしい日本語化、自動ふりがな追加機能、音声読み上げサービス
  • エンタープライズプラン(自社サーバーへのサーバーインストール版の提供※2)

※1 有償オプションの各プランの価格についてはお問い合わせください。
※2 自社のサイトで利用される固有名詞などを登録する管理画面を提供します。
※3 CMSへの情報登録中のテキストを外部APIへ送る必要があるため、自社サーバーへインストールするタイプのエンタープライズ版を用意しています。

カテゴリー
PowerCMS 5PowerCMS 8341PowerCMSクラウド