@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。
Laravel11のReverb技術的なことは書かないけど.
2024.06.26
おはようございます、Laravel11のReverb技術的なことは書かないけど.これを使用するとChatとかお手軽で出来ます.あとは管理画面にログインしている人に通知することなどが、VPSサーバーなどでは簡単に出来るようになる.今までと言えばSocket.ioなどを使用して何かしていたと思うけどそういう事をせずに出来てしまうところが良いですね.
実際、業務でプルリクエストしているので技術的なことは書かないですが、通知が飛ぶまで結構かかっている4日ぐらい試行錯誤して通知が飛ぶようになった.Laravel11から始めたひとはドキュメント通り行ったら上手く行くかも知れないけど、もともとLaravel6ぐらいだったものがアップグレードしてLaravel11になったものなので、色々と苦難の道でした.
最終的にジョブ、イベント、リスナー、プロバイダなどの理解も何となくから少し脱出出来た気がする.
この苦難の道から脱出した方法だけ書き残しておきます.まずLaravel11のドキュメントに沿って試してみた、次にenvやconfigなどを変更してみた.上手く行かなかったので「Laravel11 Reverb」でYOUTUBEで検索してみることに、そこで少し進展がありその後envなどを再設定してみたところ通知が飛ぶようになった.結構長かった.
明日へ続く.
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
chat, config, env, Laravel1, Laravel11, Laravel11 Reverb, Reverb, Socket.io, VPSサーバー, youtube, アップグレード, ジョブ, ドキュメント, ドキュメント通り, ひと, プル, プロバイダ, もともとLaravel, リスナー, 苦難,
ツイッターのDM内容をOpenAI api(chatGPT)で判別しスパムの場合ブロックする。#ソースコード
2023.04.17
おはようございます、スパムをブロックするソースコードを掲載します。ご自由にご使用いただけばと思っています。これを作ったのは先週の日曜日のことです、TwitterのDMに悩まされていたので何か方法はないかなって思って作ったのがこれです。実際、自分は試しに導入してみたのですが、精度はまずまず良い結果でした。因みに自分は作ったのですが今のところ、使ったのは先週の日曜日だけで未だに手動でブロックしています。使わない理由は大量のスパムが来ているわけではないので、特に問題は無いからです。唯、大量のスパムが来ている人にはそれなりにお役に立てるツールかも知れないです。
ツイッターのDM内容をOpenAI api(chatGPT)で判別しスパムの場合ブロックする。
スパム精度は結構良いです。
使用方法
- コマンドで実行
php BlockMessage.php spamcheck
使用したComposerのライブラリ
- TwitterOAuth
- openai-php/client
phpのバージョン
- php8.1
前提条件
- 掲載していないファイルは推測して作ってください。
<?php
require_once "../vendor/autoload.php";
require_once "../tw-config-v2.php";
require_once "../openAI-config.php";
use Abraham\TwitterOAuth\TwitterOAuth;
class BlockMessage
{
var $connection = null;
public function __construct()
{
$this->twitterConnection();
$result = $this->getTwitterDM();
if(!$this->judgmentSpam($result[0])){
$this->setTwitterBlockedUser($result[1]);
}
}
public function twitterConnection()
{
// TwitterOAuthクラスのインスタンスを作成する
$this->connection = new TwitterOAuth(APIKEY, APISECRET, ACCESSTOKEN, ACCESSTOKENSECRET);
// APIバージョンを設定する
$this->connection->setApiVersion('2');
}
/**
* DMを取得する
* @return array
*/
public function getTwitterDM()
{
$dm_events = $this->connection->get('dm_events',["expansions"=>"sender_id","user.fields"=>"username,id"]);
return [$dm_events->data[0]->text,$dm_events->data[0]->sender_id,$dm_events->data[0]->id];
}
/**
* OpenAI APIを使用してスパム判定
* @param string $text
* @return false
*/
public function judgmentSpam(string $text="")
{
if (!$text) return false;
$client = OpenAI::client(OPENAIAPIKEY);
$result = $client->chat()->create([
'model' => 'gpt-3.5-turbo',
'messages' => [
["role"=>"system", "content"=>'Your job is to identify spam, please determine if the message is spam or not. If it is spam, please write "This is spam". For non-spam messages, write "OK".'],
["role"=>"system", "content"=>'respond to in English.'],
['role'=> 'user', 'content' => $text],
]
]);
if(preg_match("/(OK)/i",$result->choices[0]->message->content)){
print "non-spam".PHP_EOL;
return true;
}
if(preg_match("/(spam)/i",$result->choices[0]->message->content)){
print "This is spam".PHP_EOL;
return false;
}
return true;
}
/**
* スパムアカウントをブロック
* @param string $blocked_user_id
* @return false
*/
public function setTwitterBlockedUser(string $blocked_user_id = "")
{
if (!$blocked_user_id) return false;
$block_result = $this->connection->post('users/'.MYTWID.'/blocking', ['target_user_id' => $blocked_user_id], true);
if ($block_result->data->blocking) {
print 'Blocked user successfully.'.PHP_EOL;
return true;
} else {
print 'Failed to block user.'.PHP_EOL;
return false;
}
}
}
if($argv[1]==="spamcheck"){
new BlockMessage();
}
https://github.com/taoka-toshiaki/BlockMessage
著者名 @taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
argv, chat, ChatGPT, choices, Client, Composer, connection, construct, getTwitterDM, messages, OPENAIAPIKEY, print, quot, spam, spamcheck, string, Twitter, twitterConnection, TwitterOAuth, vendor,