# Client actions ของปลั๊กอิน Pushwoosh Outsystems

ปลั๊กอินมีชุดของ client actions เพื่ออำนวยความสะดวกในการจัดการการแจ้งเตือนแบบพุช actions เหล่านี้ช่วยให้คุณสามารถลงทะเบียนและยกเลิกการลงทะเบียนอุปกรณ์, ตั้งค่าและรับ tags, จัดการข้อความใน inbox และอื่นๆ

## Client actions ของปลั๊กอิน Pushwoosh

### CheckPushwooshPlugin

ตรวจสอบว่าปลั๊กอิน Pushwoosh พร้อมใช้งานในปัจจุบันหรือไม่

#### พารามิเตอร์ Output

| IsAvailable | คืนค่า true หากปลั๊กอินพร้อมใช้งาน, มิฉะนั้นจะคืนค่า false                                                                                                  |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error       | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

#### ตัวอย่างการใช้งาน

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-1.webp" alt="action CheckPushwooshPlugin"/>

### RegisterDevice

ลงทะเบียนอุปกรณ์สำหรับการแจ้งเตือนแบบพุชและรับ Push Token

#### พารามิเตอร์ Input

| ApplicationCode | Text, รหัสแอปพลิเคชัน Pushwoosh ที่ได้รับจากการตั้งค่าบัญชีของคุณ |
| --------------- | ------------------------------------------------------------------------- |



#### พารามิเตอร์ Output

| RegisterToken | Token ที่ได้รับจาก Google หรือ Apple สำหรับอุปกรณ์                                                                                                               |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Success       | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| Error         | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

### UnregisterDevice

ยกเลิกการลงทะเบียนอุปกรณ์จากการรับการแจ้งเตือนแบบพุช

#### พารามิเตอร์ Output

| Success | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error   | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

### GetDeviceID

ดึงข้อมูล ID ของอุปกรณ์ ซึ่งควรเป็นตัวระบุที่ไม่ซ้ำกัน

#### พารามิเตอร์ Output

| DeviceHwid | ตัวระบุที่ไม่ซ้ำกันของอุปกรณ์                                                                                                          |
| ---------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| Error      | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อมีข้อผิดพลาดเท่านั้น |

### GetDeviceType

รับประเภทของอุปกรณ์ (Android, iOS หรือ Windows)

#### พารามิเตอร์ Output

| DeviceTypeId | ตัวระบุของประเภทอุปกรณ์นี้ |
| ------------ | ----------------------------------- |

### GetTags

ดึงข้อมูล tags จาก Pushwoosh

#### พารามิเตอร์ Output

| Success | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error   | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |
| Tags    | คืนค่า Key, Value Record List ที่มี tags ทั้งหมดที่กำหนดให้กับอุปกรณ์นี้                                                                                      |

#### ตัวอย่างการใช้งาน

1. เรียกใช้ action **GetTags** เพื่อดึงข้อมูล tags จาก Pushwoosh
2. tags ที่ส่งคืนมาสามารถเข้าถึงได้ผ่านรายการ **GetTags.Tags**

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-2.webp" alt=""/>

3. ใช้ action **LogMessage** เพื่อบันทึก key และ value ของแต่ละ tag

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-3.webp" alt=""/>

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-4.webp" alt=""/>

### PostEvent

ส่งข้อความไปยัง Pushwoosh เมื่อมี event เฉพาะเกิดขึ้นในแอปพลิเคชันของคุณ

#### พารามิเตอร์ Input

| EventName       | Text, ชื่อของ event                                                                                                                                                    |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| EventAttributes | Key, Value Record List, ใช้เพื่อส่งข้อมูล event เพิ่มเติมไปยัง Pushwoosh (เช่น สำหรับ action "UserLogin" คุณอาจต้องการส่งข้อมูลการเข้าสู่ระบบ เช่น - `{"username":"John"}`) |

พารามิเตอร์ Output

| Success | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error   | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

#### ตัวอย่างการใช้งาน

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-5.webp" alt=""/>

**1. กำหนดค่า**

ตั้งค่าคู่ key-value เพื่อกำหนดข้อมูลสำหรับ event ตัวอย่างเช่น KeyValue1.AttributeName เป็น "test1" และ KeyValue1.Value เป็น "test1value" ในทำนองเดียวกัน กำหนด KeyValue2 ด้วยชื่อ attribute และ value ที่เหมาะสม

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-6.webp" alt=""/>

2. สร้างรายการของ attributes ที่จะเชื่อมโยงกับ event

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-7.webp" alt=""/>

3. สุดท้าย กำหนดค่า action **PostEvent**

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-8.webp" alt=""/>

### SetBadgeNumber

ตั้งค่าหมายเลขบนป้ายไอคอนแอปพลิเคชัน

#### พารามิเตอร์ Input

| BadgeNumber | Integer, หมายเลขบนป้ายไอคอน |
| ----------- | --------------------------- |

#### พารามิเตอร์ Output

| Success | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error   | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

### SetLanguage

ตั้งค่าภาษาของแอปพลิเคชันเองแทนภาษาเริ่มต้นของระบบ

#### พารามิเตอร์ Input

| Language | Text, ภาษาของแอปพลิเคชันที่กำหนดเองในรูปแบบ ISO 2 ตัวอักษร (เช่น "en", "es", "fr") |
| -------- | --------------------------------------------------------------------------------- |

### SetTags

ส่ง tags และค่าของมันไปยัง Pushwoosh

#### พารามิเตอร์ Input

| Tags | TagName, TagValue Record List ที่มี tags ทั้งหมดที่คุณต้องการส่ง ประเภทของ TagName ควรเป็น Text เสมอ ในขณะที่ TagValue สามารถเป็น Text, Integer, Boolean, Date ฯลฯ |
| ---- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |

#### พารามิเตอร์ Output

| Success | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error   | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

#### ตัวอย่างการใช้งาน

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-9.webp" alt=""/>

1. กำหนดค่า tag ในตัวอย่างด้านล่างมีสอง tags:

* Tag1 ที่มีชื่อ testTag และค่าของมันถูกตั้งเป็นวันที่ปัจจุบัน
* Tag2 ที่มีชื่อ testTag2 และค่าของมันถูกตั้งเป็น True

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-10.webp" alt=""/>

2. จากนั้น เพิ่ม tags เข้าไปในรายการ ในตัวอย่างนี้:

* ListAppend3 เพิ่ม Tag1 เข้าไปในรายการ LocalTag
* ListAppend4 เพิ่ม Tag2 เข้าไปในรายการ LocalTag

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-11.webp" alt=""/>

3. หลังจากเติมรายการด้วย tags ที่จำเป็นแล้ว ให้ใช้ client action **SetTags** เพื่อส่งรายการนี้ไปยัง Pushwoosh

<img src="/outsystems-pushwoosh-outsystems-plugin-client-actions-12.webp" alt=""/>

### SetUserId

กำหนด User ID ที่กำหนดเองให้กับอุปกรณ์นี้

#### พารามิเตอร์ Input

| UserID | Text, User ID ที่กำหนดเอง |
| ------ | --------------------- |

#### พารามิเตอร์ Output

| Success | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error   | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

## Pushwoosh Inbox Client Actions

กระบวนการทำงานกับ Inbox มีดังนี้:

1. โหลดรายการของอ็อบเจกต์ InboxMessage
2. ใช้อ็อบเจกต์เหล่านี้เพื่อแสดงมุมมอง inbox
3. ดำเนินการ actions ที่ระบุไว้ด้านล่าง หรือลบอ็อบเจกต์เหล่านี้โดยใช้ actions ที่อธิบายไว้ด้านล่าง

| code              | Text                   | ID ที่ไม่ซ้ำกันของการแจ้งเตือนใน inbox                                                                                                                                                                                                                                                                                               |
| ----------------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| title             | Text                   | หัวข้อการแจ้งเตือน                                                                                                                                                                                                                                                                                                               |
| message           | Text                   | ข้อความการแจ้งเตือน                                                                                                                                                                                                                                                                                                             |
| imageUrl          | Text                   | URL ของรูปภาพที่กำหนดเองที่แนบมากับการแจ้งเตือน                                                                                                                                                                                                                                                                                 |
| sendDate          | <p>Date</p><p>Time</p> | แสดงเวลาที่ส่งการแจ้งเตือน                                                                                                                                                                                                                                                                                 |
| type              | Integer                | <p>ประเภทของการแจ้งเตือน</p><p> ค่าที่เป็นไปได้:</p><ul><li>0 - การแจ้งเตือนปกติ</li><li>1 - การแจ้งเตือนแบบ rich media</li><li>2 - การแจ้งเตือนแบบ URL</li><li>3 - การแจ้งเตือนแบบ deep link</li></ul>                                                                                                                                |
| bannerUrl         | Text                   | มี URL ของแบนเนอร์ Android                                                                                                                                                                                                                                                                                                |
| customData        | Key, Value Record List | มีรายการพารามิเตอร์ที่ส่งเป็นข้อมูลที่กำหนดเอง                                                                                                                                                                                                                                                                              |
| isRead            | Boolean                | True หากการแจ้งเตือนใน inbox ถูกอ่านแล้ว                                                                                                                                                                                                                                                                                               |
| isActionPerformed | Boolean                | <ul><li><strong>True</strong> หาก action ของการแจ้งเตือนถูกดำเนินการ </li><li>สำหรับการแจ้งเตือนปกติ, <strong>true</strong> หากการแจ้งเตือนถูกอ่านแล้ว </li><li>สำหรับ Rich Media, <strong>true</strong> หาก rich media ถูกแสดง </li><li>สำหรับ URL และ deep links, <strong>true</strong> หาก URL/deep link ถูกเปิด</li></ul> |

### LoadMessages

ดึงข้อมูลการแจ้งเตือนใน inbox จาก Pushwoosh

#### พารามิเตอร์ Output

| InboxMessages | InboxMessage List, รายการของข้อความใน inbox ทั้งหมด                                                                                                                   |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Success       | คืนค่า **true** หากทุกอย่างเป็นไปตามที่คาดไว้, **false** หากมีข้อผิดพลาด                                                                                 |
| Error         | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

### ReadMessage

ทำเครื่องหมายข้อความใน inbox ว่าอ่านแล้ว

#### พารามิเตอร์ Input

| MessageCode | Text, รหัสของ InboxMessage (ได้รับเป็นพารามิเตอร์ของ InboxMessage ใน LoadMessages) |
| ----------- | ------------------------------------------------------------------------------------------ |

#### พารามิเตอร์ Output

| Success | True หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                                 |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error   | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

### PerformAction

ดำเนินการ action สำหรับข้อความใน inbox ที่ระบุ (เช่น เปิด URL ในเบราว์เซอร์)

#### พารามิเตอร์ Input

| MessageCode | Text, รหัสของ InboxMessage (ได้รับเป็นพารามิเตอร์ของ InboxMessage ใน LoadMessages) |
| ----------- | ------------------------------------------------------------------------------------------ |

#### พารามิเตอร์ Output

| Success | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error   | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

### DeleteMessage

ลบข้อความออกจาก inbox

#### พารามิเตอร์ Input

| MessageCode | Text, รหัสของ InboxMessage (ได้รับเป็นพารามิเตอร์ของ InboxMessage ใน LoadMessages) |
| ----------- | ------------------------------------------------------------------------------------------ |

#### พารามิเตอร์ Output

| Success | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Error   | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

### TotalMessagesCount

คืนค่าจำนวนข้อความใน inbox ทั้งหมด

#### พารามิเตอร์ Output

| MessagesCount | Integer, จำนวนข้อความใน inbox ทั้งหมด                                                                                                                         |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Success       | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| Error         | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

### UnreadMessagesCount

คืนค่าจำนวนข้อความใน inbox ที่ยังไม่ได้อ่าน

#### พารามิเตอร์ Output

| UnreadMessagesCount | Integer, จำนวนข้อความใน inbox ที่ยังไม่ได้อ่าน                                                                                                                        |
| ------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Success             | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| Error               | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |

### MessagesWithNoActionPerformedCount

คืนค่าจำนวนข้อความใน inbox ที่ไม่มีการดำเนินการ action

#### พารามิเตอร์ Output

| MessagesWithNoActionPerformedCount | Integer, จำนวนข้อความใน inbox ที่ไม่มีการดำเนินการ action                                                                                                      |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Success                            | คืนค่า true หากทุกอย่างเป็นไปตามที่คาดไว้, false หากมีข้อผิดพลาด                                                                                         |
| Error                              | ข้อผิดพลาดที่มีรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดพร้อมรายละเอียดเกี่ยวกับข้อผิดพลาดที่อาจเกิดขึ้น จะถูกตั้งค่าเมื่อพารามิเตอร์ Success output เป็น false เท่านั้น |