---
title: ダイレクトメッセージ送信API
slug: world-sdk-guide-ja/XLft-api
docTags: 
createdAt: 2024-09-02T08:34:13.135Z
---

ZEPETO World内の他のユーザーにダイレクトメッセージを送信するには、Send Direct Message(DM) APIを使用できます。

起動されたワールドでダイレクトメッセージ(DM)送信APIを使用すると、メッセージの下部にワールドに入るためのリンクが自動的に提供され、ワールドのプロモーションに適しています。

使用する際は、必ず注意事項に従ってください。



## インストール

Window → Package Manager → ZEPETO.World Package まずバージョン1.21.14以上をインストールしてください。

その後、バージョン1.0.7以上の‘ZEPETO.Module’パッケージをインストールしてください。

ZEPETOアプリがバージョン3.46.000以上で動作していることを確認してください。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-T9TuAabUuLAT0LuugnJ06-20240904-102426.png)



## ダイレクトメッセージAPIを送信

- Send DM APIを使用するには、以下のインポート文を追加してください。

```typescript
import { SocialService } from 'ZEPETO.Module.Social';
```



### DM送信のコア機能

- 宣言
  - public static OpenPopupDirectMessage($sendMessage: string, $userIds?: string\[], $onComplete?: System.Action$1)\:void;
- パラメータ

| **パラメータ**   | **説明**                                                                                                                                                              |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| sendMessage | これは必須のパラメータです。これは送信したいメッセージの本文です。空白または空の場合、送信は失敗と見なされます。                                                                                                            |
| userIds     | これはオプションのパラメータです。<br /><br />userIdsを渡すと<br />- 選択UIは対応するユーザーIDリストで構成されます。<br /><br />userIdsが渡されない場合や空のリストが渡された場合<br />- 選択UIはメッセージを送信するユーザーのフォロー/フォロワーリストで構成されます。 |
| onComplete  | これはメッセージの送信が完了したときまたは失敗したときに呼び出されるコールバックです。                                                                                                                         |

### ダイレクトメッセージポップアップ状態

| **応答** | **説明**                          |
| ------ | ------------------------------- |
| キャンセル  | ポップアップが手動で閉じられた場合、または送信が失敗した場合。 |
| 送信完了   | 送信リクエストが完了し、閉じるとき。              |



### エラーコードによる状況

| **応答** | **説明**                                                 |
| ------ | ------------------------------------------------------ |
| 31002  | ユーザーIDリストに存在しないユーザーIDが1つ以上含まれている場合に発生します。              |
| 37011  | ゲストアカウントでメッセージを送信しようとしたときに発生します。                       |
| 8001   | 同じメッセージを繰り返し送信し続けると発生します。10秒ごとに1回送信できます。               |
| 2001   | ‘送信’フィールドのメッセージ内容が空であるか、スペースのみを含むか、1000文字を超える場合に発生します。 |
| 0      | ネットワーク接続エラーのケース（ネットワーク切断、接続不安定、その他一般的なエラー状況など）。        |
| -1     | 特定できないエラー。                                             |



## 使用例

### 送信者を直接入力して送信

1\) DM送信ボタンをキャンバスに追加してください。

2\) 以下のようにサンプルコードを書いてください。

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { SocialService, DirectMessagePopupState } from 'ZEPETO.Module.Social';
import { Button } from "UnityEngine.UI";
import { WorldService } from 'ZEPETO.World';
 
export default class SendDirectMessage extends ZepetoScriptBehaviour {
 
    // 直接メッセージを格納する変数
    public message: string;
 
    // 直接メッセージを送信するユーザーIDの配列
    public userIds: string[];
 
    // ボタンUIコンポーネントへの参照
    public sendDMButton: Button;
 
    Start() {
 
        this.sendDMButton.onClick.AddListener(() => {
 
            // 自分のIDがuserIds配列に含まれているか確認し、含まれていれば戻る
            if (this.userIds.includes(WorldService.userId)) {
                console.log("userIdsに自分のuserIdが含まれています");
                return;
            }
 
            // SocialServiceを使用して直接メッセージを送信するポップアップを開く
            SocialService.OpenPopupDirectMessage(this.message, this.userIds, (popupState: DirectMessagePopupState) => {
 
                // 直接メッセージポップアップの状態を確認
                if (popupState === DirectMessagePopupState.Cancel) {
                    console.log("ポップアップを閉じたか、メッセージの送信に失敗しました");
                } else if (popupState === DirectMessagePopupState.SendComplete) {
                    console.log("DMメッセージが正常に送信され、ポップアップが閉じました。");
                }
            });
        });
    }
}
```



3\) スクリプトを書いた後、Unityエディタに戻り、インスペクタでボタンをドラッグして設定します。メッセージ本文とターゲットユーザーのUserIDを入力してください。

- UIには最大20人が表示されるので、最大20人を入力してください。

4\) DM送信ボタンを押すと、友達リストのUIが表示されます。

- 対象ユーザーを選択して、送信をクリックします。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-ltxU4LpgiD3Cb_S8P-B5n-20240904-102426.png)



5\) DMの送信が成功すると、成功を示すトーストUIが表示され、サンプルスクリプトによってログが出力されます。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-3H38WwOdHHfnlwKLPpCOr-20240904-102426.jpg)



6\) また、targetUserにDMが届きました。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-9LGy617GHDh0OR11wIcs9-20240904-102426.png "プレローンチの世界でテストする際は、メッセージのみが送信されます。")



![](https://archbee-doc-uploads.s3.amazonaws.com/BtCo2cIFh9h5Mo0EP64o_-oRNWP8wKpywlhoCB6O0Y7-20240909-101729.PNG "起動された世界でDM送信APIを使用する際は、世界のリンクも送信されます。")



- エラーが発生した場合、例えばメッセージを連続して送信したり、メッセージ内容が空である場合、DMの送信は失敗として処理されます。

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-P34IPXnC-SFmAdr8ttnBa-20240904-102426.jpg)



### 次の/フォロワーリストUIを使用して送信

1\) キャンバスにボタンを追加してください。

2\) 以下のようにサンプルコードを書いてください。

- 空のリストをtargetUserIDパラメータに渡すと、次の/フォロワーリストUIが表示されます。

```typescript
import { ZepetoScriptBehaviour } from 'ZEPETO.Script';
import { SocialService, DirectMessagePopupState } from 'ZEPETO.Module.Social';
import { Button } from "UnityEngine.UI";
 
export default class SendDirectMessage extends ZepetoScriptBehaviour {
 
    // 直接メッセージを格納する変数
    public message: string;
 
    // ボタンUIコンポーネントへの参照
    public sendDMButton: Button;
 
    // ユーザーIDの配列を格納するプライベート変数、初期値はnull
    private emptyIds: string[];
 
 
    Start() {
 
        this.sendDMButton.onClick.AddListener(() => {
 
            // SocialServiceを使用して直接メッセージを送信するポップアップを開く
            // クラスのメッセージ内容と空のユーザーID配列を使用
            SocialService.OpenPopupDirectMessage(this.message, this.emptyIds, (popupState: DirectMessagePopupState) => {
 
                // 直接メッセージポップアップの返された状態を確認
                if (popupState === DirectMessagePopupState.Cancel) {
                    console.log("ポップアップを閉じたか、メッセージの送信に失敗しました");
                } else if (popupState === DirectMessagePopupState.SendComplete) {
                    console.log("DMメッセージが正常に送信され、ポップアップが閉じました。");
                }
            });
        });
    }
}
```



3\) スクリプトを書いた後、Unityエディタに戻り、インスペクタでボタンをドラッグして設定します。それからメッセージの本文を入力してください。

4\) DM送信ボタンを押すと、フォロー/フォロワーUIが表示されます。

- ターゲットユーザーを選択して送信をクリックします。（最大5人まで選択可能）

![](https://api.archbee.com/api/optimize/fCt3n1oCa8rgNJ8fw9I2N-XbkJOIi0aM9bSFITPZT8g-20240904-102426.png)



:::hint{type="danger"}
- 一度に最大5人にDMを送信できます。
- 自分にDMを送信することはできません。
- 実際のフォロー/フォロワーの数は、DM送信ポップアップに表示されるユーザー数と異なる場合があります。
  - 選択可能なユーザーがフィルタリングされて表示されるためです。
- DMの受信をブロックしているユーザーを選択すると、それは失敗として扱われ、DMは送信されません。
- Send DM APIを頻繁に呼び出すと、制限され、送信が失敗します。
  - 10秒ごとに1回送信できます。無差別にDMを送信しないように注意してください。
- 送信するメッセージにURLが含まれている場合、正しく動作しないため、URLを含むメッセージの送信は禁止されています。
- 送信されるメッセージが空白または空である場合、それは失敗として扱われます。メッセージの内容を必ず記入してください。
:::

