---
title: アプリ
---



{/* 
  コントリビューター注:
  ----------------
  これはレガシードキュメントであり、非推奨になります。
  このバージョンに変更を加えないでください。
  すべての更新は新しいバージョンに向けられるべきです：
  /plugin-dev-ja/9242-reverse-invocation-app
*/}

<Card title="このドキュメントはまもなく非推奨になります" icon="circle-exclamation" href="/plugin-dev-ja/9242-reverse-invocation-app">
  <p>ドキュメント再編の一環として、このページは段階的に廃止されます。</p>
  
  <p><u><b>このカードをクリックして</b></u>、最新情報が含まれる更新版にリダイレクトしてください。</p>
  
  <p>新しいドキュメントに不一致や改善が必要な箇所を見つけた場合は、ページ下部の「問題を報告」ボタンを使用してください。</p>
</Card>

リバース呼び出しとは、プラグインがDify内のAppデータにアクセスできることを意味します。このモジュールは、ストリーミングと非ストリーミングの両方のAppコールをサポートしています。

### **エンドポイントタイプ：**

* `Chatbot/Agent/Chatflow`タイプのアプリケーションは、すべてチャットタイプのアプリケーションであり、同じ入力パラメータと出力パラメータを持つため、統一的に**チャットインターフェース**として扱うことができます。
* Workflowアプリケーションは、独立した**ワークフローインターフェース**を占有します。
* Completion（テキスト生成）アプリケーションは、独立した**Completionエンドポイント**を占有します。

注意：プラグインは、プラグインと同じWorkspace内のAppにのみアクセスできます。

### **チャットインターフェースのリクエスト** **エントリーポイント**

#### エントリーポイント

```python
self.session.app.chat
```

#### **エンドポイント仕様**

```python
def invoke(
    self,
    app_id: str,
    inputs: dict,
    response_mode: Literal["streaming", "blocking"],
    conversation_id: str,
    files: list,
) -> Generator[dict, None, None] | dict:
    pass
```

`response_mode`が`streaming`の場合、インターフェースは`Generator[dict]`を返し、それ以外の場合は`dict`を返します。具体的なインターフェースフィールドについては、`ServiceApi`の戻り値を参照してください。

#### **例**

`Endpoint`内でチャットタイプのAppをリクエストし、結果を直接返すことができます：

```python
import json
from typing import Mapping
from werkzeug import Request, Response
from dify_plugin import Endpoint

class Duck(Endpoint):
    def _invoke(self, r: Request, values: Mapping, settings: Mapping) -> Response:
        """
        与えられたリクエストでエンドポイントを呼び出します。
        """
        app_id = values["app_id"]
        def generator():
            response = self.session.app.workflow.invoke(
                app_id=app_id, inputs={}, response_mode="streaming", files=[]
            )
            for data in response:
                yield f"{json.dumps(data)} <br>"
        return Response(generator(), status=200, content_type="text/html")
```

**ワークフローエンドポイント** **エントリーポイント**

#### エントリー

```python
self.session.app.workflow
```

#### **エンドポイント仕様**

```python
def invoke(
    self,
    app_id: str,
    inputs: dict,
    response_mode: Literal["streaming", "blocking"],
    files: list,
) -> Generator[dict, None, None] | dict:
    pass
```

### **Completionエンドポイントのリクエスト**

#### エントリー

```python
self.session.app.completion
```

**エンドポイント仕様**

```python
def invoke(
    self,
    app_id: str,
    inputs: dict,
    response_mode: Literal["streaming", "blocking"],
    files: list,
) -> Generator[dict, None, None] | dict:
    pass
```

{/*
Contributing Section
DO NOT edit this section!
It will be automatically generated by the script.
*/}

---

[このページを編集する](https://github.com/langgenius/dify-docs/edit/main/ja-jp/plugins/schema-definition/reverse-invocation-of-the-dify-service/app.mdx) | [問題を報告する](https://github.com/langgenius/dify-docs/issues/new?title=ドキュメントの問題%3A%20&body=%23%23%20問題の説明%0A%3C%21--%20発見した問題について簡単に説明してください%20--%3E%0A%0A%23%23%20ページリンク%0Ahttps%3A%2F%2Fgithub.com%2Flanggenius%2Fdify-docs%2Fblob%2Fmain%2Fja-jp/plugins/schema-definition/reverse-invocation-of-the-dify-service%2Fapp.mdx%0A%0A%23%23%20提案される変更%0A%3C%21--%20特定の変更案がある場合は、ここで説明してください%20--%3E%0A%0A%3C%21--%20ドキュメントの品質向上にご協力いただきありがとうございます！%20--%3E)

