# 流程介紹

<figure><img src="/files/xE98UJUkRcI8QCLWhfqK" alt=""><figcaption><p>留言流程</p></figcaption></figure>

### 特點

* 可以用拖曳方式移動節點
* 測試可以直接測試第三方渠道，不用每次跑去第三方渠道測試
* 每個渠道都提供測試板和生產版，除了網頁只有生產版。

<figure><img src="/files/k5zfQf6vpcGhwFnak8RA" alt=""><figcaption><p>測試畫面</p></figcaption></figure>

<table><thead><tr><th>渠道</th><th data-type="checkbox">卡片模板</th><th data-type="checkbox">訊息文字</th><th data-type="checkbox">圖片訊息</th><th data-type="checkbox">影片訊息</th><th data-type="checkbox">語音訊息</th><th data-type="checkbox">檔案訊息</th></tr></thead><tbody><tr><td>LINE</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td><td>false</td></tr><tr><td>Messenger</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td></tr><tr><td>Telegram</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td><td>true</td></tr></tbody></table>

{% hint style="info" %}
Telegram卡片模板不支援多個。

機器人固定只能使用文字加按鈕輸出，其他需要用自定義JSON輸出，包含LINE的Flex Message。

(截止到1.0.51版本，仍沒實裝變數注入，只能使用固定的JSON輸出)

大致上跟以下連結提供相似，僅額外新增Flex Message，只是將變數注入移除。

<https://docs.communeify.com/tw/products/dmflow/tutorials/docs/bot-template.html>
{% endhint %}

{% hint style="warning" %}
開發機器人前須知

* 開始節點不代表歡迎節點，可以用/start呼叫。
* 回覆節點的中斷，原本是條件式裡面有意圖判斷，但雲端版移除了意圖，所以此功能效果不大。此功能的用途是當該節點fallback時，會找尋start節點輸出的branch條件有滿足的就前往。
* 當調用"/" 反斜線開頭的時候，後面接的場景可以直接跳往，假設你現在在場景A，機器人問你"你的留言"，當你想找資料時你輸入/B，完成/B之後，會跳回場景A並且重新詢問"你的留言"。轉向其他節點不代表是取消當前節點。
  {% endhint %}

{% hint style="info" %}
以下建議搭配DMflow\.chat進行操作。
{% endhint %}

### 資源節點

資源節點可以將對話擷取的實體調用其他API並返回，預設為同步，會等待獲得到對方返回的回應才進行下一步，此節點時間逾時為5\~10秒鐘。此節點調用內部API未來將不受限制。

同 [HTTP](/domain/formqa/trigger/http.md)

### 回覆節點

可以根據對方選擇語系，輸出不同語言(為何不用自動翻譯，因為有些專有名詞沒定義好會出問題，若需要多語言請調用領域)。

| 內容                                               | 解釋                                            |
| ------------------------------------------------ | --------------------------------------------- |
| 回答                                               | 你可以選擇多個回答，但會隨機選擇其中一個                          |
| 按鈕                                               | 按鈕的顯示文字，點擊動作分為文本、事件、連結。                       |
| <ul><li>文本按鈕</li><li>連結按鈕</li><li>事件按鈕</li></ul> | <p>回傳文字。<br>點選會開啟連結。<br>分為忽略、打斷、開始、結束、喚醒。</p> |
| <ul><li>忽略事件</li></ul>                           | 僅顯示按鈕顯示文字，DMflow會忽略這個事件                       |
| <ul><li>打斷事件</li></ul>                           | 可以跳轉到另一個場景                                    |
| <ul><li>開始事件</li></ul>                           | 回到主場景                                         |
| <ul><li>結束事件</li></ul>                           | 結束這個session                                   |
| <ul><li>喚醒事件</li></ul>                           | 進入聆聽模式時，使用這個按鈕無須喚醒句可以執行喚醒機器人。                 |
| 等待用戶回覆                                           | 此節點結束，等到下次用戶回覆才會繼續                            |
| 打斷啟動                                             | 當用戶下一個節點命中失敗後，會重新從開始時節找滿足的節點進入。               |

### 情境節點

| 內容    | 解釋                                                                                                    |
| ----- | ----------------------------------------------------------------------------------------------------- |
| 打斷    | 將當前場景sleep並且呼叫其他場景，其他場景完畢後會此場景會wake up繼續完成。                                                           |
| 重新開始  | 將此場景重新開始流程                                                                                            |
| 重回主情境 | 主情境一般為Main但是有些地方可以更改主情境，例如:Messenger的OPEN\_THREAD                                                     |
| 完成    | 一般節點結束都會自動調用完成，除了branch如果fallback時會直接拋出fallback訊息，假設你不想出現fallback訊息可以在後面接上完成。                         |
| 結束流程  | 直接結束                                                                                                  |
| 聆聽    | 當調用聆聽時，機器人會只接收訊息，但是如果訊息滿足子流程的話會調用子流程的節點，直到聽到你給定地喚醒句子才會結束聆聽。通常子流程會搭配資源節點。你可以透過此節點實現不同渠道聊天，或是呼叫一些資源監聽等。 |
| 跳轉    | 可以直接跳轉其他回覆節點(必須勾選等待用戶回應)                                                                              |

### 調用節點

調用節點大多是產品提供的API節點化，大多都可以用API調用

目前提供的包含

* 領域調用
* 事件註冊(提供廣播註冊)
* 事件註冊取消(提供廣播取消註冊)
* 連結帳號(將帳號連結到DMflow\.chat)
* 真人客服

### 變數節點

可以將取得的參數注入標籤、使用者資料以及單一會話儲存的節點。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dmflow.chat/chatbot/flow.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
