PHP code example of trust-medical / laravel-chatwork-api

1. Go to this page and download the library: Download trust-medical/laravel-chatwork-api library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

trust-medical / laravel-chatwork-api example snippets


'connections' => [
    'default' => [
        'auth' => 'api_token',
        'token' => env('CHATWORK_API_TOKEN'),
    ],
    'bot' => [
        'auth' => 'api_token',
        'token' => env('CHATWORK_BOT_TOKEN'),
    ],
],

use TrustMedical\LaravelChatworkApi\Facades\Chatwork;

// メッセージ送信
Chatwork::rooms()->messages()->create(123, 'こんにちは');

// 自分の情報を取得(既定は DTO で返る)
$me = Chatwork::me()->get();
echo $me->name;

// 設定済み connection を名前で指定
Chatwork::connection('bot')->rooms()->messages()->create(123, 'bot からの通知');

// その場限りのトークンで実行
Chatwork::withApiToken($token)->me()->get();
Chatwork::withBearerToken($oauthAccessToken)->me()->get();

$rooms = Chatwork::asCollection()->rooms()->list();
$raw   = Chatwork::asArray()->me()->get();
$res   = Chatwork::asResponse()->rooms()->find(123);

use TrustMedical\LaravelChatworkApi\Data\Requests\CreateRoomRequest;
use TrustMedical\LaravelChatworkApi\Data\Requests\UpdateRoomRequest;
use TrustMedical\LaravelChatworkApi\Enums\IconPreset;

Chatwork::rooms()->list();
Chatwork::rooms()->find(123);

Chatwork::rooms()->create(new CreateRoomRequest(
    name: '新規ルーム',
    membersAdminIds: [101, 102],
    description: 'チーム連絡用',
    iconPreset: IconPreset::Meeting,
));

Chatwork::rooms()->update(123, new UpdateRoomRequest(name: '改名後'));

// 破壊的操作は対象を明示した命名(曖昧な delete() は提供しない)
Chatwork::rooms()->leaveRoom(123);   // action_type=leave
Chatwork::rooms()->deleteRoom(123);  // action_type=delete

Chatwork::rooms()->messages()->create(123, '本文', selfUnread: true);
Chatwork::rooms()->messages()->list(123, force: true);
Chatwork::rooms()->messages()->find(123, '1024');
Chatwork::rooms()->messages()->update(123, '1024', '編集後の本文');
Chatwork::rooms()->messages()->deleteMessage(123, '1024');
Chatwork::rooms()->messages()->markAsRead(123, '1024');
Chatwork::rooms()->messages()->markAsUnread(123, '1024');

use TrustMedical\LaravelChatworkApi\Data\Requests\ReplaceRoomMembersRequest;

Chatwork::rooms()->members()->list(123);

Chatwork::rooms()->members()->replaceMembers(123, new ReplaceRoomMembersRequest(
    membersAdminIds: [101],
    membersMemberIds: [201, 202],
    membersReadonlyIds: [301],
));

use TrustMedical\LaravelChatworkApi\Data\Requests\CreateRoomTaskRequest;
use TrustMedical\LaravelChatworkApi\Enums\LimitType;
use TrustMedical\LaravelChatworkApi\Enums\TaskStatus;

Chatwork::rooms()->tasks()->create(123, new CreateRoomTaskRequest(
    body: '見積もりを確認する',
    toIds: [101, 102],
    limit: 1735718400,
    limitType: LimitType::Time,
));

Chatwork::rooms()->tasks()->list(123, status: TaskStatus::Open);
Chatwork::rooms()->tasks()->find(123, 456);
Chatwork::rooms()->tasks()->updateStatus(123, 456, TaskStatus::Done);

use TrustMedical\LaravelChatworkApi\Data\Requests\UploadRoomFileRequest;

Chatwork::rooms()->files()->upload(123, new UploadRoomFileRequest(
    path: storage_path('app/report.pdf'),
    message: '月次レポートです',
));

Chatwork::rooms()->files()->list(123);
Chatwork::rooms()->files()->find(123, 789, createDownloadUrl: true);

use TrustMedical\LaravelChatworkApi\Data\Requests\RoomLinkRequest;

Chatwork::rooms()->links()->find(123);
Chatwork::rooms()->links()->create(123, new RoomLinkRequest(
    code: 'team-invite',
    needAcceptance: true,
    description: '招待リンク',
));
Chatwork::rooms()->links()->update(123, new RoomLinkRequest(description: '説明更新'));
Chatwork::rooms()->links()->deleteLink(123);

Chatwork::me()->get();
Chatwork::my()->status();
Chatwork::my()->tasks(status: TaskStatus::Open);
Chatwork::contacts()->list();

Chatwork::incomingRequests()->list();
Chatwork::incomingRequests()->accept(456);
Chatwork::incomingRequests()->decline(456);

use TrustMedical\LaravelChatworkApi\Exceptions\ChatworkException;

try {
    Chatwork::rooms()->messages()->create(123, '本文');
} catch (ChatworkException $e) {
    // 本パッケージ由来の全例外をここで捕捉
}

use TrustMedical\LaravelChatworkApi\Exceptions\ChatworkRequestException;

try {
    Chatwork::rooms()->messages()->create(123, '本文');
} catch (ChatworkRequestException $e) {
    $e->status();            // int
    $e->errors();            // string[](通常 API: {"errors":[...]})
    $e->error();             // ?string(OAuth: error)
    $e->errorDescription();  // ?string(OAuth: error_description)
    $e->rateLimit();         // ?array(429 時: limit / remaining / reset)
}

$result = Chatwork::asResult()->rooms()->messages()->create(123, '本文');

if ($result->failed()) {
    $result->status();   // int
    $result->errors();   // string[]
    $result->rateLimit();
    return;
}

$data = $result->data();

use TrustMedical\LaravelChatworkApi\Notifications\ChatworkMessage;
use TrustMedical\LaravelChatworkApi\Notifications\ChatworkNotification;

class DeployFinished extends ChatworkNotification
{
    public function toChatwork(object $notifiable): ChatworkMessage
    {
        return (new ChatworkMessage())
            ->toRoom(123)
            ->info('デプロイ完了', "本番反映が完了しました。\nコミット: abc123")
            ->selfUnread();
    }
}

use TrustMedical\LaravelChatworkApi\Notifications\ChatworkRoute;

public function routeNotificationForChatwork(): ChatworkRoute
{
    return ChatworkRoute::room(123)->connection('bot');
}

'oauth' => [
    // ...
    'routes_enabled' => true,
    'route_prefix' => 'chatwork/oauth',
    'redirect_after_callback' => '/dashboard',
    'token_repository' => \App\Chatwork\DatabaseTokenRepository::class,
    'state_store' => null, // 既定は Cache ベース
],

// ユーザー単位の OAuth トークンで API を叩く
Chatwork::forOAuthKey((string) $user->id)
    ->rooms()
    ->messages()
    ->create($roomId, $body);

// レスポンスモードはどちら順で chain しても効く
Chatwork::asResult()->forOAuthKey((string) $user->id)->me()->get();
Chatwork::forOAuthKey((string) $user->id)->asResult()->me()->get();
bash
php artisan vendor:publish --tag="chatwork-config"