comimie’s blog

comimieさんの日記 及び 作業ログ

kintoneがWebhook対応になった。

 kintoneから外部サービスへのアクセス

これまで、kintoneのレコード作成、変更、ステータス変更のイベント時に外部のWEBサービスを参照した結果を得る場合は、kintone.Promiseやkintone.proxyを使っていたが、2017年2月版kintoneからWebhookが使えるということを知った。

アプリのID,レコード番号、操作の種類(作成、変更、ステータス変更)、レコード内容まで送ってくれちゃいます。


kintoneアプリの設定 カスタマイズ/サービス連携 にあります。

f:id:hatmimie:20170213171058p:plain

WebhookのURLと通知する条件をチェックするだけです。

f:id:hatmimie:20170213170843p:plain

詳しくは、

Webhookを設定する | kintone ユーザーヘルプ

 

結果をファイルに保存するだけのWebhook

<?php
    $body = file_get_contents("php://input");
    if (!empty($body)) {
        file_put_contents("./ktn.json",$body);
    }
?>

 

特定のメールからkintoneレコードを作成しLINE通知する。

まず、Zapier (読みはザピエルかザピア―かどっちかわからん?)のサービスで、TRIGGERサービスは、GMAILにしてメールの表題やFROMアドレスの内容を判断させる。ACTIONのサービスは、kintoneにします。GMAILの特定の内容をあるアプリに自動的にレコード作成する。ZAPを作成する。

 

次に今度は、TRIGGERをkintoneにして新規レコードを検出させ、ACTIONをGEMAILにして、特定のタグ付き(#email2lineとか)でGMAILでメールさせます。この時、宛先をtrigger@applet.ifttt.comにします。

 

次に今度は、IFTTT (イフス)で、TRIGGERを EMAILとして、”Send IFTTT an email tagged” を選び、上記にタグを設定して、ACTIONを、LINEにして、LINEグループを選択して、Appletを作成します。

 

Wordpress Contact Form 7 カスタマイズ

Wordpressのコンタクトフォームで、メールアドレスを確認の意味で2回入力させてチェックするというよくある入力チェック対応とラジオボタン、チェックボタンを横並びではなく、縦並びにするカスタマイズを行った。

テーマ編集で functions.php 以下のものを追加した。

 

<?php
add_filter( 'wpcf7_validate_email', 'wpcf7_text_validation_filter_extend', 11, 2 );
add_filter( 'wpcf7_validate_email*', 'wpcf7_text_validation_filter_extend', 11, 2 );
function wpcf7_text_validation_filter_extend( $result, $tag ) {
    $type = $tag['type'];
    $name = $tag['name'];
    $_POST[$name] = trim( strtr( (string) $_POST[$name], "\n", " " ) );
    if ( 'email' == $type || 'email*' == $type ) {
        if (preg_match('/(.*)_confirm$/', $name, $matches)){
            $target_name = $matches[1];
            if ($_POST[$name] != $_POST[$target_name]) {
                if (method_exists($result, 'invalidate')) {
                    $result->invalidate( $tag,"確認用のメールアドレスが一致していません");
                } else {
                    $result['valid'] = false;
                    $result['reason'] = array( $name => '確認用のメールアドレスが一致していません' );
                }
            }
        }
    }
    return $result;
}
?>
<?php
add_filter( 'wpcf7_validate_radio', 'my_validate_radio', 10, 2 );
function my_validate_radio( $result, $tag ) {
    $type = $tag['type'];
    $name = $tag['name'];
 
    if ( 'radio' == $type ) {
        if ( !isset( $_POST[$name] ) || '' == $_POST[$name] ) {
            $result['valid'] = false;
            $result['reason'] = array( $name => wpcf7_get_message( 'invalid_required' ) );
        }
    }
    return $result;
}
?>