# Azure Bot Service

ในคอร์สนี้เราจะมาพูดถึงการเขียน **Bot** กัน ซึ่งหลายๆคนที่ได้เคยเห็น Chat Bot ก็อาจจะอยากมีเป็นของตัวเองบ้างไรงี้ ส่วนสำหรับคนที่ไม่รู้ว่าเจ้านี่คืออะไรเลย ผมอธิบายให้เห็นภาพง่ายๆว่า เราสามารถเขียนระบบโต้ตอบอัตโนมัติกับผู้ใช้ได้ เพื่อเอาไว้ช่วยเหลือผู้ใช้จากคำถามที่เจอบ่อยๆได้ หรือแม้กระทั่งช่วยงานเราในการจัดซื้อสินค้าไรงี้ ดังนั้นในรอบนี้เราจะมาเรียนรู้เจ้าสิ่งที่ชื่อว่า **Azure Bot Service** กันครับ

## 🤔 Bot ทำอะไรได้บ้าง ?

คำตอบมันเยอะจนไม่รู้จะเลือกตอบยังไงดีเลย เอาเป็นว่า **Bot** มันสามารถ **`พูดคุยกับเราได้`** **`เข้าใจบทสนทนาได้`** **`ตัดสินใจจากข้อมูลที่มี`** **`ค้นหาข้อมูล`** บลาๆ ดังนั้นถ้าถามว่ามันทำอะไรได้บ้าง คำตอบคือ ของที่ผม highlight ไว้เราสามารถเอามาประกอบกันแล้วอยากให้ bot เราทำอะไรก็ได้ เช่น ช่วยตอบคำถามลูกค้า หรือ จะให้เป็นเลขาเราแบบจาวิสในไอรอนแมนก็ทำได้ เพราะ bot มันมีความสามารถในการทำงานร่วมกับ service อื่นๆของคลาว์ทุกเจ้านั่นเอง เช่นทำงานร่วมกับ AI เพื่อช่วยวิเคราะห์ว่าหุ้นตัวไหนน่าสนใจไรงี้

ตัวอย่างที่เห็นกันบ่อยๆคือทำ Chat Bot เอาไว้ช่วยอำนวยความสะดวกต่างๆ หรือ เป็นเลขาส่วนตัว มันง่ายมากจนเด็กก็ทำได้เชื่อไหม ?

![](/files/-LrB7KS8qbaXGfsSjsb2)

สาเหตุที่ Bot มันเก่งเพราะมันสามารถทำงานร่วมกับ service ต่างๆได้นั่นเอง

![](/files/-Lw4qL_ACZtYWotE-5lq)

## 🤔 แพงไหม ?

มีทั้งตัวเสียเงินและตัวไม่เสียเงิน ซึ่งถ้าเราอยากลองวิชาก็ลองเล่นฟรีได้เลยครับ

| CHANNEL  | FREE                 | S1                          |
| -------- | -------------------- | --------------------------- |
| Standard | ไม่จำกัด             | ไม่จำกัด                    |
| Premium  | 10,000 ข้อความ/เดือน | $0.50 USD ต่อ 1,000 ข้อความ |

## 🤔 สนใจละ เริ่มไง ?

การสร้าง Chat Bot ทำได้หลายวิธีเลย แต่อันแรกที่อยากแนะนำคือทำผ่าน **Azure Portal** ครับ ส่วนวิธีสร้างแบบอื่นๆลองดูจากลิงค์ด้านล่างเอาต่อนะครับ

{% hint style="info" %}
**Azure Portal**\
เนื้อหาในรอบนี้จะต้องเข้าไปที่ทำที่เว็บ <https://portal.azure.com> นี้นะครับ ซึ่งเราต้องสมัครสมาชิกก่อนด้วย ส่วนถ้าใครยังไม่ได้สมัครก็ไปสมัครให้เรียบร้อยแซ๊ร [(วิธีสมัครจิ้มตรงนี้)](https://saladpuk.gitbook.io/learn/cloud/azure101/register)
{% endhint %}

1.หลังจากที่ Login เข้ามาละ ที่เมนูด้านซ้ายมือให้เลือก **`+ Create a resource`** ซะ แล้วเมนูในหน้าตรงกลางให้เลือก **`AI + Machine Learning`** แล้วจะเห็น **`Web App Bot`** ให้จิ้มมันเข้าไปเบย

![](/files/-Lo5stqhyX7Azzg41xDr)

2.ถัดมาเขาก็จะขอให้เราใส่รายละเอียด **Web App Bot** ที่จะสร้าง ดังนั้นก็ใส่ๆข้อมูลไปครับ รายละเอียดแต่ละช่องคืออะไรอยู่ด้านล่างครับ

| ชื่อ | รายละเอียด |
| ---- | ---------- |

| Bot name | ชื่อ Bot service ของเรา |
| -------- | ----------------------- |

| Resource group | <p>จะสร้างไว้ใน resource group ไหน</p><p>(ถ้าไม่มีให้กด Create new เลยครับ แล้วเลือกเป็น Southeast Asia)</p> |
| -------------- | ------------------------------------------------------------------------------------------------------------ |

| Location | <p>จะสร้าง Bot ไว้ที่เซิฟเวอร์โซนไหน</p><p>(ถ้าเราลองเล่นในไทยให้เลือก Southeast Asia ครับเร็วดี)</p> |
| -------- | ----------------------------------------------------------------------------------------------------- |

| Pricing tier | <p>ราคาต่อเดือน อยากดูรายละเอียดกด View full pricing details ได้นะ</p><p>ตัวนี้ถ้าเราลองวิชาเฉยๆใช้ <strong>F0</strong> ครับไม่เสียตังเลย</p> |
| ------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |

| Bot template | <p>เราจะเขียน bot ด้วยภาษาอะไร และจะให้ใส่ตัวอย่างแบบไหนมา</p><p><strong>ดูรายละเอียดด้านล่างต่อ</strong></p> |
| ------------ | ------------------------------------------------------------------------------------------------------------- |

| LUIS App location | <p>ถ้าใครเลือก Bot template เป็น Basic Bot (C#)</p><p>เราจะต้องสร้าง LUIS ด้วย ซึ่งเจ้านี่คือตัวที่คอยทำความเข้าใจ</p><p>ว่าคนที่คุยด้วยกำลังพูดถึงอะไร ซึ่งเจ้าตัวนี้ยังไม่มีใน</p><p>Southeast Asia ดังนั้นเลือกๆอะไรก็ได้ไปก่อนครับ</p> |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

| App service plan | <p>ตัวเซิฟเวอร์ที่เราจะสร้างเว็บ</p><p>หากใครยังไม่มีให้กด setting เข้าไปแล้วกด Create เลยครับ</p><p><strong>ดูรายละเอียดด้านล่างต่อ</strong></p> |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |

**Bot template** ให้เลือกเป็นภาษา C# และ Basic Bot นะครับ เพราะในตัวอย่างเราจะเขียนโดยวิธีนี้ครับ อ่านจบแล้วไปลองแบบอื่นก็ตามสะดวกเบย

![](/files/-LngfAxoGUZhaQAYWYkg)

**App service plan** ถ้าใครยังไม่มีให้กดตามขั้นตอนนี้เลยนะครับ

![](/files/-LofIwxtmRGoOVNvXon-)

หลังจากที่ใส่ทุกอย่างจนหนำใจแล้วก็จิ้มปุ่ม **Create** เบาๆไป 1 ทีงับก็เป็นอันจบพิธีกรรม แล้วก็รอเขาสร้างจนเสร็จครับ

![](/files/-LnNDWdnC_ChnvlxLvlE)

## 🤔 สร้างเสร็จแล้วจะลองเล่นทำไง ?

1.เราสามารถลองเล่น Bot Service ที่สร้างมาได้โดยการเข้าไปใน Resource group ที่เราสร้างมันเอาไว้ครับ ในตัวอย่างผมสร้างไว้ใน `saladpuk-demo` ดังนั้นของเพื่อนๆสร้างไว้ที่ไหนก็ลองหาดูเด้อ

![](/files/-Lo6OCS5J33x_qtgx6oF)

2.พอเข้ามาก็จะเจอกับผองเพื่อนของมัน ไม่ต้องตกใจครับให้กดตัวที่มันเป็น Bot Service เลยครับ

![](/files/-M-_TDnr7ZE4SOMXffUY)

3.จากตรงนี้เขาก็จะมีรายละเอียดให้ว่าจะทำนั่นนู่นนี่กับ Bot ยังไงได้บ้าง ก็ถ้าสนใจลึกๆก็ลองเข้าไปอ่านต่อเอาละกันครับ แต่ในรอบนี้ผมจะลองเข้าใช้งานตัว Bot ละดังนั้นผมก็ขอกด **`Test in Web Chat`** ที่เมนูด้านซ้ายเลยละกัน

![](/files/-LsfK8fhiOEDCkYXkXYy)

4.ในตัว `Test in Web Chat` จะเป็นการลองคุยกับตัว Bot ของเราผ่านหน้าเว็บเลย ซึ่งมันก็จะมีการทำงานพื้นฐานแบบง่ายๆให้เราลองจองตั๋วเครื่องบินจากเบอร์ลินไปปารีสไรงี้นะครับ ซึ่งเจ้าตัวนี้มันก็จะยังไม่เก่งเท่าไหร่ เดี๋ยวเราก็จะค่อยๆทำให้มันเก่งขึ้นไปเรื่อยๆเอาครับ

![](/files/-M-VEfvwSZuCW2cZwlxA)

## 🤔 อยากทำให้มันเก่งขึ้นทำไง ?

ในรอบนี้เราก็จะต้องเอา source code ไปแก้ไขครับ โดยการคลิกที่เมนู `Build` ด้านซ้าย แล้วเลือก `Download bot source code` ครับ ส่วนถ้าแก้ไขเสร็จแล้วจะเอากลับขึ้นมายังไง หรือจะเทสมันยังไง รายละเอียดก็จะอยู่ในหน้านี้เช่นกันครับ

![](/files/-LoNy-kKR0D1ADLqykRy)

เสร็จเขาจะถามว่าตัว source code จะให้ใส่ รหัสลับในการเข้าใช้งาน Bot ตัวจริงลงมาด้วยหรือเปล่า ในตัวอย่างนี้ผมเอาง่ายเขาว่าครับเลยขอตอบ `Yes` ไปละกัน

![](/files/-LwiZSETk5fugkgmyWWw)

หลังจากได้ไฟล์มาแล้ว ก็ให้ทำการแตก zip เพื่อเตรียมเล่นกับโค้ดละครับ ซึ่งเราก็จะเจอของเยอะๆประมาณรูปนี้แหละ ซึ่งเราก็จะเห็นไฟล์โปรเจคของ Visual Studio นะครับ ให้กดเปิดไฟล์นี้ได้เลยถ้ามี Visual Studio อยู่แล้ว หรือจะเปิด Folder นี้ด้วย Visual Studio Code ก็ได้ครับ

![](/files/-LnNWBtPwtReZq1_PBTL)

{% hint style="success" %}
**Visual Studio Installer**\
หากยังไม่มี Visual Studio IDE หรือ Visual Studio Code สามารถดาวโหลดได้จากลิงค์ด้านล่างนี้ครับ ฟรี (ถ้าเอาด่วนๆแนะนำให้ลง Visual Studio Code ครับ) อ่ออย่าลืมลง .NET Core ด้วยนะ

* [Visual Studio Community](https://visualstudio.microsoft.com/)
* [Visual Studio Code](https://code.visualstudio.com/)
* [.NET Core SDK](https://dotnet.microsoft.com/download)
  {% endhint %}

พอเราเปิดออกมา เราจะเห็นว่าเขามี Web App ให้เราตัวนึง แล้วข้างในก็มีโค้ดของ Bot ทำงานร่วมกับ LUIS อีกทีนึง ซึ่งรายละเอียดของโค้ดเดี๋ยวมาว่ากันทีหลัง ตอนนี้ผมขอลอง Run web ขึ้นมาให้ดูก่อน

![](/files/-Lqkn3vdHmo9tMDNeFuR)

**การ Run website ขึ้นมาดู**

สำหรับการเปิดเว็บถ้าเป็น **Visual Studio IDE** สามารถกด `CTRL + F5` เพื่อเปิดเว็บได้เลยนะครับ ส่วนสำหรับคนที่ใช้ **Visual Studio Code** นั้นให้เปิด command prompt/terminal ขึ้นมา แล้วเข้ามาที่ directory ของโปรเจคนี้นะครับ แล้วใช้คำสั่งด้านล่างได้เลยครับ

```
dotnet run
```

แล้วจะเห็นลิงค์ของเว็บขึ้นมาครับ (ตัว port อาจจะไม่ตรงกับผมก็ไม่เป็นไรครับ) ให้ copy ลิงค์ที่ได้ไปเปิดใน web browser ได้เลยครับ

```
Now listening on: http://localhost:3978
```

พอเปิดเว็บขึ้นมาเราก็จะเจอหน้าตาประมาณนี้ โดยรวมๆเขาก็จะบอกว่าเรามี Bot ที่พร้อมทำงานแล้ว แต่ถ้าเราอยากทดสอบ Bot ตัวนี้ให้ไปดาวโหลด `Emulator` มาลองใช้คุยกับ Bot ของเราได้

![](/files/-Lo3xthJT8kRnns094FH)

{% hint style="info" %}
**Emulator**\
ในที่นี้ปรกติตัว Bot จะทำงานเป็น background อยู่ด้านหลัง หรือพูดง่ายคือคนจะเข้ามาคุยกับ Bot ได้จะต้องคุยผ่าน API ไรงี้ ซึ่งจริงๆเราจะต้องเขียน Client เพื่อทำหน้าที่เป็นตัวคุยกับ Bot อีกทีนึง ซึ่งเจ้า Emulator นี้จะทำหน้าที่แทน Client ของเรานั่นเอง ดังนั้นอย่างรอช้าไปดาวโหลด Emulator จากลิงค์ด้านล่างนี้ได้เลย

* [Download Microsoft Bot Emulator](https://github.com/Microsoft/BotFramework-Emulator/blob/master/README.md)
* [Microsoft Bot Emulator Document](https://docs.microsoft.com/en-us/azure/bot-service/bot-service-debug-emulator?view=azure-bot-service-4.0\&tabs=csharp)
  {% endhint %}

หลังจากดาวโหลดมาเสร็จแล้วก็ให้เปิดโปรแกรมขึ้นมาก็จะเจอหน้าตาประมาณนี้ครับ ถัดมาเราก็จะลองทำงานกับ Bot ของเราโดยการกดปุ่มสีฟ้าๆ `Open Bot`ได้เลย

![](/files/-M-iBfg7D6rXK6pURxV7)

ถัดมาเขาก็จะให้เรากรอกตัว Web API ของ Bot ของเราลงไป ก็ไป copy ลิงค์เว็บของเรามาใส่ครับ แต่จะต้องต่อท้ายด้วย `/api/messages` ด้วยครับ (ลองเข้าไปดู API ใน source code ได้ครับ มันอยู่ในไฟล์`Controllers/BotController.cs` นั่นแหละ) แล้วก็กดปุ่ม `Connect` เลยครับ

![](/files/-M-_Rs61Sk_rrfxLQ7z0)

เราก็จะสามารถมาลองเล่นกับ Bot เราได้ละ โดยเจ้าตัว Bot Emulator นี้เราสามารถเอาเมาส์ไปคลิกพวกข้อความอะไรพวกนี้ได้นะครับ เพื่อดูว่ามันส่ง request ไปที่ไหนและได้ response อะไรกลับมาอีกด้วย

![](/files/-LrKK0437W46kAL49bWa)

## 🎯 บทสรุป

ในตัวอย่างนี้เราจะเห็นว่าการสร้าง Chat Bot จริงๆงายม๊วกๆ คลิกๆไม่กี่ทีก็ได้ Chat Bot ง่ายๆมา 1 ตัวละ แถมยังมีเครื่องมือที่เอาไว้ช่วยให้เรา Test การทำงานของ Bot เราได้แบบละเอียดยิบเลยด้วย ส่วนที่เหลือเราก็จะต้องไปเขียนโค้ดเพื่อให้ Bot ของเราเก่งขึ้นต่อไป ซึ่งรอติดตามได้ในคอร์สนี้เลยครับ จะมาอัพเดทเรื่อยๆที่ side menu ครับป๋ม


---

# 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://www.saladpuk.com/cloud/azure-bot-service.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.
