IT系フリーランスの技術備忘録

日々の業務で学んだ事の覚書やフィードバックなど。たまに関係ない記事も。

LINEの匿名チャットBOTを「Messaging API」で作成したよ!

以前、LINEで匿名チャットBOTを作成しようと思い、Qiitaのこの記事のソースをコピペしたらうまく動作しなかったという記事を書きました。

microsoftcream87.hateblo.jp


結局のところ動作しなかった原因は、Qiitaのmasuhajimeさんの記事にかかれていたソースは、「BOT API Trial Account」という既に終了したサービス用のソースで、現在(この記事を書いているのは2017年6月24日)LINEBOTを作るためのサービス「Messaging API」では動作しないという事だった訳ですが、このたび、その動作しなかった匿名チャットBOTのソースを、Amazonで購入した、

という本で勉強して、改造しましたので、ご紹介致します。
Message APIで操作する匿名チャットBOTのソースはこちらです!

<?php

// Composerでインストールしたライブラリを一括読み込み
require_once __DIR__ . '/vendor/autoload.php';

// アクセストークンを使いCurlHTTPClientをインスタンス化
$httpClient = new \LINE\LINEBot\HTTPClient\CurlHTTPClient(getenv('CHANNEL_ACCESS_TOKEN'));
// CurlHTTPClientとシークレットを使いLINEBotをインスタンス化
$bot = new \LINE\LINEBot($httpClient, ['channelSecret' => getenv('CHANNEL_SECRET')]);
// LINE Messaging APIがリクエストに付与した署名を取得
$signature = $_SERVER['HTTP_' . \LINE\LINEBot\Constant\HTTPHeader::LINE_SIGNATURE];

// 署名が正当かチェック。正当であればリクエストをパースし配列へ
// 不正であれば例外の内容を出力
try {
  $events = $bot->parseEventRequest(file_get_contents('php://input'), $signature);
} catch(\LINE\LINEBot\Exception\InvalidSignatureException $e) {
  error_log('parseEventRequest failed. InvalidSignatureException => '.var_export($e, true));
} catch(\LINE\LINEBot\Exception\UnknownEventTypeException $e) {
  error_log('parseEventRequest failed. UnknownEventTypeException => '.var_export($e, true));
} catch(\LINE\LINEBot\Exception\UnknownMessageTypeException $e) {
  error_log('parseEventRequest failed. UnknownMessageTypeException => '.var_export($e, true));
} catch(\LINE\LINEBot\Exception\InvalidEventRequestException $e) {
  error_log('parseEventRequest failed. InvalidEventRequestException => '.var_export($e, true));
}

$midFile = __DIR__ . "/files/mids";

// midsの中身を読み込み
$mids = explode(PHP_EOL, trim(file_get_contents($midFile)));


// 配列に格納された各イベントをループで処理
foreach ($events as $event) {

  //  テキストメッセージでなければ処理をスキップ
  if (!($event instanceof \LINE\LINEBot\Event\MessageEvent)) {
    error_log('Non message event has come');
    continue;
  }

  // メッセージを送ってきたユーザーを取得
  $newMids = array();
  $newMids[] = $event->getUserId();

 // 新規のユーザーの場合は追加
  $mids = array_merge($newMids, $mids);
  $mids = array_unique($mids);

  file_put_contents($midFile, implode(",", $mids));

  // メッセージを全登録ユーザーID宛にプッシュ
  foreach ($mids as $mid) {
    $response = $bot->pushMessage($mid, new \LINE\LINEBot\MessageBuilder\TextMessageBuilder($event->getText()));
    if (!$response->isSucceeded()) {
      error_log('Failed!'. $response->getHTTPStatus . ' ' . $response->getRawBody());
    }
  }

}

このソースを利用できるようになるまでの道のりも、全て、

に書かれていますので、匿名チャットBOTを作って自分も友人などと匿名チャットBOTで遊んでみたいという方で、かつ、上記のソースだけでは動作に至るまでいかないかたは、ご購入下さい。

ブログの記事作成が格段に速くなる!ウインドウのキャプチャを張り付けたいときに圧倒的に早くなる「Snipping Tool」のご紹介

f:id:microsoftcream87:20170624070401j:plain

photo credit: Tom Simpson Lynda Carter as Wonder Woman via photopin (license)

 

ブログの記事を作成するとき、PCの画面キャプチャを記事に張り付けたいときは、どのようにやってますか?

 

私は今まで、PrtScnで画像キャプチャして、それをペイントブラシにコピーして、どこかにいったん保存し。。。という手順を踏んでいました。

 

そんな事をしていたら手間がかかる!

 

で、やっと最近、かなり早く出来る方法がわかりました。

 

方法は、「Snipping Tool」を使います。

 

このツール、画面のキャプチャが出来ることはPrtScnと一緒なんですが、画面をそのまま矩形に切り取ってキャプチャ出来るんです。

 

で、キャプチャした画像は、記事にそのままCtrl + Vで張り付け!

(はてなブログではこの方法でそのまま張り付けられたけど、他のブログサービスではどうなのかな。。。)

 

詳しい使い方は、こちらのokutaniさんの記事がわかりやすくていいかなーと思います。

 

vdeep.net

 

 

 

 

 

 

イライラするデータ入力の際に、便利な「Snipping Tool」ってご存知ですか?ウインドウを切り替えながらデータ入力するような場合に超便利!

f:id:microsoftcream87:20170624001211j:plain

photo credit: WCP(White Coat Photographer) IMG_6095 via photopin (license)

 

PDFだったり、パワーポイントだったりのソフトをいくつも開いて、ExcelやらWordやらに、コピペやら、データ入力などをしなければならない時に、いちいちウインドウを切り替えながら作業しなければならない事が、超~、うっとおしい事って、ありませんか?

 

入力したいデータのあるウインドウを出して、入力したいデータがコピペできるデータだったらいいのですが、画像データだったり、コピペできない内容だったりすると、次に入力するExcelなどに切り替えたときに、ぞのウインドウが全面的に出てしまうので、データを暗記しないといけなくなったりしてしまうんですよね。。。

 

で、いざ入力しようとすると、「あれ?なんだったっけ?」となって、また切り替えて。。。

 

つまりちっとも作業が進まない。。。

 

「も~、イライラする!」

 

と、こんな事ありませんか?

 

特に、モニタが1台しかないPCで作業しなければならない場合は、並べて表示するのも限界ありますし、プリントスクリーンやWin Shotなどのスクリーンキャプチャソフトを使うのもいいのですが、いちいちキャプチャしてその画像をいい感じで張り付けるのもめんどうだったり。。。

 

もっとこう、ウインドウの任意の場所を気軽に切り取って、それをホバーのように浮かせておけるような。。。

 

つまり、任意の場所を常に手前に表示させれおくような。。。

 

そんな時、ホバーとまではいかないのですが、任意の場所を矩形で切り取って、それをそのままコピペで作業をしているExcelやWordなりに張り付けることにより、ホバーで浮かせておく感じで、それを見ながら作業をするようにする方法ならあります。

 

Windows 7から標準でWindowsに入っている、「Snipping Tool」ってご存知ですか?

 

これは、画面上のどの部分でも矩形で切り取れるようになるツールなんです。

 

画像のキャプチャなら、PrtScnだったり、Winshotなんてものがありますが、それってあくまでも画面全体か、アクティブウインドウ全体のキャプチャじゃないですか。

 

あくまでも何かに張り付ける画像の場合は、いいかもしれませんが、、もう本当に一瞬、ただ入力したいデータを付箋で手元に置いていくような、そんな程度に画像が欲しい場合は、Shipping Toolで、その部分を矩形に切り取り、Excelやら入力しているアプリにさっとコピペするんです。

 

そうすると、入力したい文字を手元に置いておきながら入力が出来るようになるんでんすよね。

 

使い方は簡単、まずはプログラムの検索で、「Snnepping Tool」を検索します。

 

f:id:microsoftcream87:20170624065531p:plain

 

起動させると、このようになるので、新規作成を押すと、どこでも矩形に切り取れます。

 

f:id:microsoftcream87:20170624065641p:plain

 

詳しい使い方は、okutaniさんのブログのこの記事がわかりやすいです。

 

vdeep.net

 

 

 

 

 

 

 

 

Object Browser を使うなら一読しておきたいサイト

Object Brouwseを使うのに、なんとなく直感で使ってしまっていませんか?

これから使う方も、もうすでに使っていらっしゃる方も、このサイトの記事を1読する事をお勧めいたします。

 

products.sint.co.jp

 

特にObject Browserを使う職場環境の方であれば、周囲の人を唸らせる小技的な内容が満載です。(小技とはいえ、その小技的な事が大事。)

 

例えば、SQLを書くのに、テーブル名がわからなくて、なんどもタブ移動をさせて書いていくのはめんどうですよね?

 

そんな時は、このブログにある、[表・列]画面からのコピペ術がお勧め。

 

SQLを書くエディタを表示させながら、テーブルの一覧を右に表示させることができる。

 

これだけで、テーブルを確認する為になんどもタブを移動させなくてすみます。

 

と、こんな技がずらっと並んでいます。

 

あと、このブログ、記事の書き方が素晴らしい。。。

 

例えば、何回も叩きたい!!「お気に入りSQL」とか。

 

技術文章って、タイトルも中身も固くて読みづらかったりするかなと思うのですが、このブログは、読み物としても、どんなものか読んでみたくなってしまいます。^^

 

SQL上達の為の軌跡

SQLは一通りかけるのですが、仕事上、かなり素早く書く必要が出てきまして、何かしら実践していきますのでその覚書です。

blog.mah-lab.com

ここにこのブログの運営者である「まーくん」がSQLを上達した奇跡が書いてある。

この方は、まず、SQL書き方ドリルなるものから取り組んでいらっしゃる。

なんとなく惹かれるフレーズだ。

さくさくとSQLの設問に答えていけば上達するのだろうか?

早速アマゾンで購入した。

どんな内容だろう。。。

実践した結果はまだこのブログで!


Herokuでファイル書き込みをしても、ファイルに書き込まれない時。 → DropBox内のファイルに書き込まれるわけではないらしい

HerokuでLINE BOTを作成しています。

コード内に、eventで送られてきたユーザーIDを取得してファイル書き込みを行ったのですが、ソース実行後、ドロップボックス内のファイルを見ても書き込まれていません。

エラーも出ていないし、書き込み権限もtrueになっている。。。

ただ、書き込んだファイルを読み込んで、erro_logとして吐き出してみるときちんと書き込まれていました。

ということで、Heroku上で実行して書き込まれる先は、Drop Boxではなくて、Herokuのサーバー上のストレージに書き込まれるようですね。

たぶん、これって常識的な事なんでしょう。。。

HerokuでAdd-ons(Heroku Scheduler)のインストール時に「Item Could not be credited.」というエラーが出てインストールできない時の対象法

Hrokuの「Resources」より、Add-ons(例えばHeroku Schduler)などのインストールをしようとして、「Item coud not be credit」といいうエラーが出て登録できないという事はありませんか?

f:id:microsoftcream87:20170616005927j:plain


それは、クレジットカードの登録が出来ていないときのエラーです。

HerokuでAdd-onsをインストールするには、無料のものでもクレジットカードの登録が必要です。

もし、Add-onsインストール時にこのエラーが出た場合は、Account settingsから、クレジットカードの登録を行って下さい。

f:id:microsoftcream87:20170616010248j:plain

クレジットカードの登録方法いついては、詳細はこちらの記事にあります。

heroku へクレジットカード登録 | Linux & Android Dialy