「広告」

ワードプレス、ContactForm7の内容を、LineWorksに。API2.0版

「広告」
記事内に広告が含まれています。
「広告」

ワードプレスの「お問い合わせ」内容を、LineWorksのトークルームで受信をして、複数人で共有するという方法です。

ワードプレスの「ContactForm7」+「phpプログラム」で実現しています。

LineWorks API 2.0 版です。

API1.0版は、

ワードプレス、ContactForm7の内容を、LineWorksに
現場では、「LineWorks」が使われている場合があります。 わざわざメールをチェックしなくても、「LineWorks」に通知されると便利です。 今回は、ContactForm7 + phpプログラムでやってみたいと思います。 ↑ API...

になります。

「広告」

Line works のアカウントを作成します。

↑ line worksの画面、右上の「ログイン」を押します。

↑ 下の「管理者として新規開設」を押します

↑ 「管理者として新規開設を押して、いくつかの質問に答えてアカウントを登録します。

「広告」

「Bot」を登録

https://developers.worksmobile.com/jp/
「LINE WORKS Developers」に入ります。

↑ LINE WORKS Developer Console に入りました。

↑ 左メニュー「Bot」を選びます。

「登録」のボタンを押します。

↑ 登録画面になります。

プロフィール画像は、linework上に表示されますので、わかりやすい画像にすると混乱が少ないです。
今回、ワードプレスのロゴを入れてみました。

「bot名」も、lineworks上に表示されますので、わかりやすい名称がいいかと思います。
「説明」は、ご自身の説明を入れます。
「複数人のトークルーム招待可」にチェックを入れます。
「主担当」は、ログインしている管理者を、設定するといいかと思います。

↑ 登録されました。
注意事項には、以下のような説明がなされています。

Botがテナントに登録されました。管理者画面からBotのドメイン登録を行い公開すると、メンバーのアドレス帳に表示されるようになります。
登録したBotは、管理者画面での追加およびメンバーへの公開前に十分にテストを行ってください。

↑ 登録されました。

「広告」

botのサービス登録

https://admin.worksmobile.com/
「LINE WORKS Admin」に入ります。

↑「サービス」の「bot」を選びます。

↑ 右上、「Bot追加」を選びます。

↑ さきほど、登録したbotが表示されています。

↑ チェックを入れて、画面右側の「追加」を押します。

↑ 追加されたとのメッセージが出ます。

↑ LINE WORKS Developer Console の「Bot」のメニュー、「サービス中」になりました。

↑ LINE WORKS Admin のほうの「Bot」で、追加した「wp-contact」のbotに、鍵がかかっており、非公開に
なっていますので、これを公開にしたいと思います。鍵の左の「wp-contac」の文字をクリックします。

↑ 右下、修正を押します。

↑ 下、「公開設定」を押して、公開にして、「保存」を押します。

↑ 鍵がなくなり、公開されました。

↑ LINE WORKS トーク の管理画面で、上記のようなサービス通知がなされました。

「広告」

「API」を作成

https://developers.worksmobile.com/jp/
「LINE WORKS Developers」に入ります。

↑ 左メニュー、「API」を選び、「アプリの新規追加」を押します。
アプリ名を適当な名前で、登録します。

↑ 「OAuth Scopes」の「管理」を押します

↑ 「bot」と「bot.read」を選び、「保存」を押します。

↑ この画面に戻り、再び、「保存」を押します。

↑ 「Service Account」のところで、「発行」を押します。

↑ 「Private key」の「発行 / 再発行」を押します。

↑ 上記のような画面が出てきます。

private_(数字).keyをダウンロードします。

「広告」

LineWorksのトークルームへの招待

トークルームに、wordpressの問い合わせ内容が通知されるために、希望のトークルームに「bot」を招待します。

↑ 招待したいトークルームを選び、右上のメニューから、「招待」を選びます

↑「Bot」のタブから、設定をした「wp-contact」を選び、右下の「OK」を押します。

「Bot」タブがない場合

↑ 上記のように、「Bot」のタブがない場合があります。
原因は、以下のいずれか(1~3)かと思います。

「外部トーク連携」をしているトークルームには、招待できない。

「外部トーク連携」とは、「LINEユーザ」を招待しているトークルームです。

↑「Bot」の右側、「外部」のタブから招待しているユーザがいたら、「Bot」は招待できません。
API 1.0 の時は、できたような気がするのですが、今は(API 2.0 は)、できないようです。

外部トーク連携しているトークルームにBotを招待できるのか
### 前提・実現したいこと 外部トーク連携しているトークルームにBotを招待したい ### 発生している問題・エラーメッセージ - 外部ユーザーを招待すると以下のメッセージが出てBotが共存できない ``` XXX BotさんはLINE連...

多数人トークルームではBotを招待できるものの・・・
外部ユーザーとのトークルームはできないかと。

「複数人のトークルームに参加可」

「公開設定」を公開にする

上記は、2つとも、設定時により、変更ができます。

↑ トークルーム、右上のメニューから、一番下の「チャンネルID」を選びます。

↑ 英数字が、「-」でつながった、文字列です。

「広告」

Guzzle Http インストール

ワードプレス、ContactForm7の内容を、LineWorksに
現場では、「LineWorks」が使われている場合があります。 わざわざメールをチェックしなくても、「LineWorks」に通知されると便利です。 今回は、ContactForm7 + phpプログラムでやってみたいと思います。 ↑ API...

↑ 上記を参考にしてください。

「広告」

JWTライブラリの設置

ワードプレス、ContactForm7の内容を、LineWorksに
現場では、「LineWorks」が使われている場合があります。 わざわざメールをチェックしなくても、「LineWorks」に通知されると便利です。 今回は、ContactForm7 + phpプログラムでやってみたいと思います。 ↑ API...

↑ 上記を参考にしてください。

「広告」

プログラム

<?php

require_once 'jwt/src/BeforeValidException.php';
require_once 'jwt/src/ExpiredException.php';
require_once 'jwt/src/SignatureInvalidException.php';
require_once 'jwt/src/JWT.php';

use \Firebase\JWT\JWT;

require_once 'vendor/autoload.php';
use GuzzleHttp\Client;


$key = "(★1の内容を入れる(複数行、英数字、記号))";


$ClientID = "(★2の「Client ID」を入れる(英数字、記号))";


function get_jwt(){

    global $key,$ClientID;


    $ServiceAccount = "(★3の「Service Account」を入れる(英数字、記号))";

    $header = '{"alg":"RS256","typ":"JWT"}';
    $header = base64_encode($header);
    $header = str_replace(array('+','/','='), array('-','_',''), $header);


    $body = ['iss'=>"$ClientID",
          'sub'=>"$ServiceAccount",
          'iat'=>time(),
          'exp'=>time()+1800
        ];
    $body = json_encode($body);
    $body = base64_encode($body);
    $body = str_replace(array('+', '/', '='), array('-', '_', ''), $body);



    $data = $header.".".$body;

    openssl_sign($data, $signature, $key, OPENSSL_ALGO_SHA256);

    $signature = base64_encode($signature);
    $signature = str_replace(array('+', '/', '='), array('-', '_', ''), $signature);

    $jwt =  $header . "." . $body . "." . $signature;

    return $jwt;

}


function get_form_mes(){
        $submission = WPCF7_Submission::get_instance();
        if($submission) {
                $fm7 = $submission->get_posted_data();
                $mes = "氏名\n" . $fm7['your-name'] . "\n\n";
                $mes .= "メールアドレス\n" . $fm7['your-email'] . "\n\n";
                $mes .= "題名\n" . $fm7['your-subject'] . "\n\n";
                $mes .= "メッセージ本文\n" . $fm7['your-message'] . "\n\n";
        }
        return $mes;
}



function getAccessToken($jwttoken){
    
    global $ClientID;

    $secret = "(★2の、「Client Secret」を入れる(英数字、記号))";


    $url = "https://auth.worksmobile.com/oauth2/v2.0/token";
    $options = [
        'form_params' => [
            "grant_type" => urlencode("urn:ietf:params:oauth:grant-type:jwt-bearer"),
            "assertion" => $jwttoken,
            "client_id" => $ClientID,
            "client_secret" => $secret,
            "scope" => "bot"
        ],
        'headers' => [
            'Content-Type' => 'application/x-www-form-urlencoded'
        ]
    ];
    $client = new Client();
    $response = $client->request("POST", $url, $options);
    $status = (string) $response->getStatusCode();
    $body = $response->getBody();
    $json = json_decode($body, true);

    return $json["access_token"];
}


function send_mes(){
    
    $botno = '(★4の「Bot No.」の数字)';
    $cahnnelID = "(★5の「チャンネルID」を入れます(英数字、記号))";

    $message = get_form_mes();

    $jwt = get_jwt();

    $token_now = getAccessToken($jwt);


    $url = "https://www.worksapis.com/v1.0/bots/$botno/channels/$cahnnelID/messages";
    $options = [
        'json' => [
            "content" => [
                "type" => "text",
                "text" => $message
            ]
        ],
        'headers' => [
            'Content-Type' => 'application/json',
            'Authorization' => "Bearer $token_now"
        ]
    ];
    $client = new Client();
    $response = $client->request("POST", $url, $options);

}

?>

 

「広告」

ワードプレストの連携

該当wordpressの「function.php」に
以下の2行を入れます。lineworks.phpは、前述のプログラムを保存したファイル名です。

require get_template_directory() . '/lineworks.php';
add_action('wpcf7_mail_sent', 'send_mes', 10, 1);
「広告」

実際にやってみる

お問い合わせフォームから、送信すると

↑ トークルームに書き込まれました。

タイトルとURLをコピーしました