Chương 6: Dùng API Web trong ứng dụng

Maria và Kiana đã sẵn sàng kết hợp ứng dụng với API Web. Tuy nhiên, trước khi tiếp tục, họ quyết định tham khảo ý kiến của Preeti, Giám đốc Hoạt động CNTT.

Hiểu các yêu cầu quản lý hoạt động CNTT đối với API Web

Preeti lo ngại rằng ứng dụng và API Web phải được bảo mật vì chúng cung cấp quyền truy nhập vào dữ liệu nhạy cảm được lưu trữ trong các cơ sở dữ liệu khác nhau. Preeti muốn đảm bảo rằng việc xác thực và ủy quyền sẽ được đưa vào để ngăn chặn việc truy cập thông tin không chính đáng. Preeti cũng nhận thức được rằng công ty đang nhanh chóng mở rộng và khối lượng dữ liệu liên quan đến việc quản lý khách hàng, cuộc hẹn, các bộ phận và cơ sở kiến thức có thể sẽ tăng theo cấp số nhân trong thời gian tới. Do đó, giải pháp cần có khả năng mở rộng.

Kiana giải thích với Preeti rằng API Web hiện được triển khai với Dịch vụ ứng dụng Azure. Dịch vụ này hỗ trợ một số nhà cung cấp xác thực mà Preeti có thể cấu hình bằng cách sử dụng cổng thông tin Azure. Preeti đặc biệt quan tâm đến Microsoft Entra ID vì VanArsdel đang tìm cách triển khai hình thức xác thực này cho nhiều hệ thống công ty khác của họ trong tương lai gần.

Cấu hình xác thực Dịch vụ ứng dụng.

Dịch vụ ứng dụng cũng cung cấp khả năng bung rộng theo chiều ngang và chiều dọc. Nếu cần, Preeti có thể mở rộng quy mô các tài nguyên có sẵn cho API Web bằng cách nâng cấp gói Dịch vụ ứng dụng cho ứng dụng web:

Dịch vụ ứng dụng mở rộng quy mô.

Preeti cũng có thể sắp xếp để hệ thống mở rộng quy mô bằng cách định cấu hình tính năng tự động mở rộng quy mô. Dịch vụ ứng dụng cho phép người quản lý hoạt động xác định các quy tắc tỷ lệ tự động xác định các điều kiện mà theo đó hệ thống sẽ mở rộng quy mô trong nhiều trường hợp hơn khi tải tăng lên hoặc quay trở lại khi nhu cầu giảm xuống. Preeti cũng có thể định cấu hình tính năng tự động mở rộng quy mô trước để diễn ra theo lịch trình:

Dịch vụ ứng dụng mở rộng quy mô.

Một phần quan trọng trong vai trò của Người quản lý hoạt động CNTT là quan sát cách hệ thống có thể phát triển và đảm bảo rằng các cấu trúc hỗ trợ cơ bản sẽ xử lý việc mở rộng và thay đổi trong tương lai. Preeti biết rằng API Web do Kiana phát triển có thể được mở rộng và được các hệ thống VanArsdel khác sử dụng lại trong tương lai. Preeti cần có khả năng quản lý và kiểm soát cách các nhà phát triển yêu cầu sử dụng API Web, bảo vệ nó như một tài nguyên có giá trị và giám sát việc sử dụng nó. Do đó, Preeti quyết định bảo vệ API Web đằng sau dịch vụ Quản lý API Azure.

Quản lý API cung cấp thêm một lớp bảo mật cho API Web, cũng như cho phép giám sát và kiểm soát chi tiết ứng dụng khách nào có thể truy nhập vào các hoạt động nào. Sử dụng Quản lý API, Preeti có thể quản lý việc sử dụng tài nguyên và điều chỉnh hiệu suất của các máy khách có mức độ ưu tiên thấp để đảm bảo rằng các ứng dụng quan trọng có mức độ ưu tiên cao hơn được phục vụ nhanh hơn.

Để biết thông tin về các dịch vụ mà Quản lý API cung cấp, hãy truy nhập Giới thiệu về quản lý API.

Tạo dịch vụ Quản lý API

Preeti đã tạo dịch vụ Quản lý API thông qua cổng thông tin Azure, sử dụng các bước sau:

  1. Đăng nhập vào Cổng thông tin Azure và, trên trang Chủ, chọn Tạo tài nguyên.

    Trang chủ cổng thông tin Azure.

  2. Trong hộp văn bản Tìm kiếm MarketPlace, hãy nhập Quản lý API rồi chọn Nhập.

  3. Trên trang Quản lý API, chọn Tạo.

    Trang Dịch vụ quản lý API tạo Azure.

  4. Trên trang Tạo quản lý API, nhập các giá trị sau, sau đó chọn Xem lại + tạo:

    • Đăng ký: Chọn đăng ký của bạn
    • Nhóm nguồn lực: webapi_rg (đây là cùng một nhóm nguồn lực mà bạn đã tạo cho Dịch vụ ứng dụng)
    • Khu vực: Chọn khu vực gần nhất của bạn
    • Tên nguồn lực: Nhập tên duy nhất cho dịch vụ
    • Tên tổ chức: VanArsdel
    • Email của quản trị viên: itadmin@vanarsdel.com
    • Bậc định giá: Nhà phát triển (không có Thỏa thuận Cấp độ Dịch vụ)

    Lưu ý

    Không sử dụng bậc định giá Nhà phát triển cho một hệ thống sản xuất.

    Trang Dịch vụ quản lý API mới.

  5. Trên trang xác thực, hãy chọn Tạo và đợi trong khi dịch vụ Quản lý API được tạo.

    Lưu ý

    Có thể mất 30 phút trở lên để dịch vụ Quản lý API được cấp phép; hãy kiên nhẫn.

Phát hành API Web thông qua Quản lý API

Sau khi dịch vụ Quản lý API được tạo, Preeti đã xuất bản API Web để giúp các dịch vụ và ứng dụng khác có thể truy cập được bằng các bước sau:

  1. Trong cổng thông tin Azure, hãy chuyển đến dịch vụ Quản lý API.

  2. Trên trang Dịch vụ quản lý API, trên ngăn bên trái trong API, chọn API:

    Trang Dịch vụ quản lý API mới. Chọn API.

  3. Trong ngăn Thêm API mới, hãy chọn OpenAPI:

    Trang Dịch vụ quản lý API mới. Chọn OpenAPI.

  4. Trong hộp thoại Tạo từ thông số kỹ thuật OpenAPI, hãy nhập các giá trị sau, sau đó chọn Tạo:

    • Thông số kỹ thuật OpenAPI: https://<webapp name>.azurewebsites.net/swagger/v1/swagger.json, trong đó <webapp name> là tên của Dịch vụ ứng dụng lưu trữ API Web của bạn
    • Tên hiển thị: API Field Engineer
    • Tên: field-engineer-api
    • Hậu tố URL API: Để trống
    • URL cơ sở: Sử dụng URL mặc định

    Tạo API từ thông số kỹ thuật OpenAPI.

  5. Khi API Field Engineer đã được tạo, hãy chọn tab Thiết đặt cho API, đặt URL Dịch vụ web thành https://<webapp name>.azurewebsites.net rồi chọn Lưu:

    Đặt cấu hình thiết đặt API.

  6. Trên tab Kiểm tra, chọn GET api/Appointments URI rồi chọn Gửi:

    Kiểm tra API GetAppointments.

  7. Xác minh rằng yêu cầu thành công (mã trả về HTTP là 200 OK) và yêu cầu trả về một kết quả chứa danh sách các cuộc hẹn trong phần nội dung phản hồi:

    Phản hồi từ thử nghiệm API GetAppointments.

Kết nối với Quản lý API từ ứng dụng

Kiana và Maria hiện có thể cộng tác cùng nhau để kết nối ứng dụng được xây dựng bằng Power Apps với API Web thông qua dịch vụ Quản lý API.

Nhiệm vụ đầu tiên là tạo một trình kết nối tùy chỉnh được ứng dụng dùng để giao tiếp với Quản lý API. Điều này liên quan đến việc xuất API sang môi trường Power Apps dùng để tạo ứng dụng, được Kiana thực hiện như sau:

  1. Trong cổng thông tin Azure, hãy truy nhập vào trang dành cho dịch vụ Quản lý API mà Preeti đã tạo.

  2. Trên ngăn bên trái dưới API, chọn API.

  3. Chọn nút dấu chấm lửng cho API Field Engineer rồi chọn Xuất.

    Xuất API Web.

  4. Trên ngăn Xuất API, chọn Power Apps và Power Automate:

    Xuất API Web sang Power Apps.

  5. Trên ngăn Xuất API sang PowerApps, hãy chọn môi trường Power Apps mà bạn đã tạo ứng dụng nguyên mẫu (Maria trong hình ảnh sau), rồi chọn Xuất.

    Xuất sang môi trường Power Apps của Maria.

  6. Sau khi API đã được xuất, hãy chọn API Field Engineer. Trên trang Thiết đặt, hãy cuộn xuống phần Đăng ký, xóa sạch Đăng ký bắt buộc rồi chọn Lưu.

    Bỏ chọn đăng ký bắt buộc.

Ứng dụng nguyên mẫu đã sử dụng sổ làm việc Excel cho các nguồn dữ liệu. Giờ đây, trình kết nối tùy chỉnh cho API Web đã có sẵn, Maria thực hiện các bước sau để thêm trình kết nối vào ứng dụng:

  1. Đăng nhập vào Power Apps.

  2. Trên ngăn bên trái, bung rộng Dữ liệu và chọn Trình kết nối tùy chỉnh. Trình kết nối tùy chỉnh field-engineer-api sẽ được liệt kê. Chọn Tạo kết nối.

    Tạo một trình kết nối tùy chỉnh mới.

  3. Trong hộp thoại field-engineer-api, hãy chọn Tạo.

    Tạo trình kết nối FieldEngineerAPI.

  4. Khi kết nối đã được tạo, hãy xác minh rằng kết nối đó xuất hiện trong danh sách các kết nối khả dụng.

    Hiển thị các kết nối khả dụng.

  5. Trên ngăn bên trái, hãy chọn Ứng dụng, chọn VanArsdelApp rồi chọn Chỉnh sửa.

    Chỉnh sửa ứng dụng VanArsdel.

  6. Trên ngăn bên trái, hãy chọn tab Dữ liệu. Chọn Thêm dữ liệu, chọn nút dấu chấm lửng cho Trình kết nối rồi chọn Làm mới.

    Làm mới nguồn dữ liệu.

  7. Trong danh sách các trình kết nối, hãy chọn trình kết nối field-engineer-api.

    Xem trình kết nối.

  8. Trong hộp thoại field-engineer-api, hãy chọn trình kết nối field-engineer-api.

    Thêm kết nối FieldEngineerAPI.

  9. Trên ngăn Dữ liệu, hãy xác minh rằng trình kết nối FieldEngineerApi được liệt kê.

    Đã thêm kết nối FieldEngineerAPI.

Cập nhật ứng dụng để dùng trình kết nối: Quản lý hàng tồn kho tại hiện trường

Giờ đây, kết nối đã được thêm vào ứng dụng, Maria có thể sửa đổi màn hình để sử dụng kết nối đó thay thế các sổ làm việc Excel. Thao tác này liên quan đến việc làm việc qua từng màn hình một cách có phương pháp và thay đổi nguồn dữ liệu. Không cần thay đổi nào khác. Maria bắt đầu với màn hình BrowsePartsPartDetails như sau:

  1. Trên màn hình Chính của ứng dụng, chọn nút Bộ phận. Đặt thuộc tính hành động OnSelect cho công thức sau.

    ClearCollect(partsCollection, FieldEngineerAPI.getapiboilerparts());
    
    Navigate(BrowseParts, ScreenTransition.Fade)
    

    Hàm ClearCollect tạo một bộ sưu tập mới có tên partsCollection và điền vào bộ tập đó với dữ liệu là kết quả của việc gọi hoạt động getboilerparts trong kết nối FieldEngineerAPI.

    Tạo biến partsCollection.

    Lưu ý

    Phương pháp thực hành hay là truy xuất dữ liệu vào một bộ sưu tập và tham chiếu bộ sưu tập đó từ bất kỳ màn hình nào cần thông tin. Phương pháp này có thể lưu các màn hình khác nhau khỏi việc chạy lặp lại cùng một truy vấn và tìm nạp cùng một dữ liệu.

  2. Chọn F5 để xem trước ứng dụng.

  3. Trên màn hình Chính, hãy chọn Bộ phận. Hành động này sẽ tạo ra bộ sưu tập partsCollection. Đóng cửa sổ xem trước và quay lại Power Apps Studio.

    Lưu ý

    Mục đích của bước này là cho phép bạn xem dữ liệu trong khi chỉnh sửa BrowseParts trong các bước sau.

  4. Chọn bảng điều khiển BrowseGallery1 trong màn hình BrowseParts. Trong công thức cho thuộc tính Mục, hãy thay thế tham chiếu đến nguồn dữ liệu [@Table1] thành partsCollection.

    Thay đổi này sẽ dẫn đến một số lỗi. Việc này là do tên trường trong sổ làm việc Excel gốc đã sử dụng cách viết hoa (Tên, CategoryIDTổng quan), trong khi các thuộc tính được trả về trong phần nội dung của phản hồi API Web được đặt tên bằng chữ thường. Thay đổi các tham chiếu này để sử dụng chữ thường. Công thức phải trông giống như sau.

    SortByColumns(Search(FieldEngineerApi.getapiboilerparts(), TextSearchBox1.Text, "name", "categoryId", "overview"), "name", If(SortDescending1, Descending, Ascending))
    

    Cập nhật công thức cho màn hình Duyệt qua.

  5. Trên ngăn Dạng xem cây, hãy chọn bảng điều khiển IconRefresh1. Thay đổi hành động OnSelect thành công thức ClearCollect (partCollection, FieldEngineerAPI.getapiboilerparts ()).

    Lưu ý

    Công thức ban đầu cho hành động này gọi hàm Làm mới để điền lại dữ liệu bằng cách sử dụng kết nối với nguồn dữ liệu ban đầu. Bạn không thể sử dụng Làm mới với một kết nối chạy hàm để truy xuất dữ liệu, vì vậy nó sẽ không hoạt động với FieldEngineerApi.getapiboilerparts (). Giải pháp trong bước này điền lại bộ sưu tập partsCollection với dữ liệu mới nhất.

  6. Trên ngăn Dạng xem cây, hãy bung rộng bảng điều khiển BrowseGallery1 rồi chọn bảng điều khiển Body1. Thay đổi thuộc tính Văn bản thành ThisItem.overview.

  7. Trên ngăn Dạng xem cây, hãy chọn bảng điều khiển Subtitle1. Thay đổi thuộc tính Văn bản thành ThisItem.categoryId.

  8. Trên ngăn Dạng xem cây, hãy chọn bảng điều khiển Tiêu đề. Thay đổi thuộc tính Văn bản thành ThisItem.name.

  9. Trên ngăn Dạng xem cây, hãy chọn điều khiển DetailForm1 trên màn hình PartDetails. Thay đổi thuộc tính DataSource từ [@Table1] thành partsCollection.

  10. Trên ngăn Dạng xem cây, hãy chọn bảng điều khiển Name_DataCard1 trong DetailForm1. Thay đổi thuộc tính Mặc định thành ThisItem.name.

    Thay đổi mặc định cho thẻ dữ liệu Tên.

  11. Thay đổi thuộc tính Mặc định của bảng điều khiển CategoryID_DataCard1 thành ThisItem.categoryId.

  12. Thay đổi thuộc tính Mặc định của bảng điều khiển Overview_DataCard1 thành ThisItem.overview.

  13. Thay đổi thuộc tính Mặc định của bảng điều khiển Price_DataCard1 thành ThisItem.price.

  14. Thay đổi thuộc tính Mặc định của bảng điều khiển NumberInStock_DataCard1 thành ThisItem.numberInStock.

  15. Thay đổi thuộc tính Mặc định của bảng điều khiển Image_DataCard1 thành ThisItem.imageUrl.

  16. Trên ngăn bên trái trên tab Dữ liệu, hãy bấm chuột phải vào kết nối dữ liệu Table1, sau đó chọn Loại bỏ để xóa kết nối dữ liệu đó khỏi ứng dụng. Kết nối này không còn bắt buộc nữa.

    Loại bỏ kết nối Table1.

  17. Lưu ứng dụng.

    Lưu ý

    Bạn có thể nhanh chóng lưu ứng dụng mà không cần sử dụng menu Tệp bằng cách chọn Ctrl+S.

  18. Chọn F5 để xem trước ứng dụng. Các màn hình Duyệt qua các bộ phậnChi tiết bộ phận sẽ hoạt động chính xác như trước đây, ngoại trừ lần này các màn hình đó đang truy xuất dữ liệu từ Cơ sở dữ liệu Azure SQL InventoryDB thông qua API Web, thay vì từ tệp Excel cục bộ.

  19. Đóng cửa sổ xem trước và quay lại Power Apps Studio.

Cập nhật Ứng dụng để sử dụng Trình kết nối: Ghi chú và lên lịch tại hiện trường

Maria tiếp tục với các màn hình BrowseAppointments, AppointmentDetailsEditAppointment. Dữ liệu do các màn hình này hiển thị hiện bắt nguồn từ bảng Cuộc hẹn trong sổ làm việc Excel khác.

  1. Trên màn hình Chính của ứng dụng, hãy đặt hành động OnVisible thành công thức sau.

    ClearCollect(appointmentsCollection, Sort(Filter(FieldEngineerAPI.getapiappointments(), DateDiff(Today(), startDateTime) >= 0), startDateTime))
    

    Công thức này truy xuất dữ liệu cuộc hẹn vào bộ sưu tập appointmentsCollection. Các cuộc hẹn được lọc để lấy các lượt ghé thăm được lên lịch vào hoặc sau ngày hiện tại.

  2. Chọn bảng điều khiển nhãn hiển thị thời gian của cuộc hẹn tiếp theo. Đặt thuộc tính Văn bản thành Text(First(appointmentsCollection).startDateTime, ShortTime24).

  3. Chọn bảng điều khiển nhãn hiển thị ngày của cuộc hẹn tiếp theo. Đặt thuộc tính Văn bản thành Text(First(appointmentsCollection).startDateTime, LongDate).

  4. Chọn mục điều khiển nhãn hiển thị tên khách hàng của cuộc hẹn tiếp theo. Đặt thuộc tính Văn bản thành First(appointmentsCollection).customer.name.

  5. Chọn F5 để xem trước ứng dụng. Trên màn hình Chính, hãy chọn Cuộc hẹn. Hành động này sẽ tạo ra bộ sưu tập appointmentsCollection. Đóng cửa sổ xem trước và quay lại Power Apps Studio.

  6. Trên ngăn Dạng xem cây, hãy chọn điều khiển BrowseAppointmentsGallery trên màn hình BrowseAppointments. Thay đổi công thức trong thuộc tính Mục của công thức sau.

    Sort(Filter(appointmentsCollection, StartsWith(customer.name, TextSearchBox1\_1.Text)), startDateTime)
    

    Công thức này lọc dữ liệu hiển thị trên màn hình theo tên khách hàng, cho phép người dùng nhập tên khách hàng. Các cuộc hẹn được hiển thị theo thứ tự ngày và giờ.

  7. Trên ngăn Dạng xem cây, hãy bung rộng bảng điều khiển BrowseAppointmentsGallery rồi chọn bảng điều khiển Title1_1. Thay đổi thuộc tính Văn bản thành như sau.

    Text(ThisItem.startDateTime, LongDate)
    

    Công thức này hiển thị phần ngày của trường startDateTime cho cuộc hẹn.

  8. Trên ngăn Dạng xem cây, hãy bung rộng bảng điều khiển BrowseAppointmentsGallery rồi chọn bảng điều khiển Subtitle1_1. Thay đổi thuộc tính Văn bản thành như sau.

    Text(ThisItem.startDateTime, ShortTime24)
    

Công thức này hiển thị phần tử thời gian của trường startDateTime.

  1. Trên ngăn Dạng xem cây, hãy bung rộng bảng điều khiển BrowseAppointmentsGallery rồi chọn bảng điều khiển Body1_1. Thay đổi thuộc tính Văn bản thành như sau.

    ThisItem.customer.name
    
  2. Trên ngăn Dạng xem cây, hãy chọn bảng điều khiển IconRefresh1_1 trên màn hình BrowseAppointments. Đặt hành động OnSelect thành công thức sau.

    ClearCollect(appointmentsCollection, Sort(Filter(FieldEngineerAPI.getapiappointments(), DateDiff(Today(), startDateTime) >= 0), startDateTime));
    
  3. Trên ngăn Dạng xem cây, hãy bung rộng màn hình AppointmentDetails rồi chọn bảng điều khiển DetailForm1_1. Đặt thuộc tính DataSource thành appointmentsCollection.

  4. Trên ngăn Dạng xem cây, hãy chọn bảng điều khiển IconEdit1. Sửa đổi công thức trong thuộc tính DisplayMode để kiểm tra bộ sưu tập appoinmentsCollection.

    If(DataSourceInfo(**appointmentsCollection**, DataSourceInfo.EditPermission), DisplayMode.Edit, DisplayMode.Disabled)
    
  5. Trên ngăn Dạng xem cây, hãy bung rộng màn hình DetailForm1_1 rồi chọn bảng điều khiển Customer Name_DataCard1. Thay đổi thuộc tính Mặc định thành ThisItem.customer.name.

  6. Thay đổi thuộc tính Mặc định của các thẻ dữ liệu còn lại như sau:

    • Customer Address_DataCard1: ThisItem.customer.address
    • Contact Number_DataCard1: ThisItem.customer.contactNumber
    • Problem Details_DataCard1: ThisItem.problemDetails
    • Status_DataCard1: ThisItem.appointmentStatus.statusName
    • Notes_DataCard1: ThisItem.notes
    • Image_DataCard1_1: ThisItem.imageUrl
  7. Trên ngăn Dạng xem cây, hãy bung rộng màn hình EditAppointment rồi chọn bảng điều khiển EditForm1. Đặt thuộc tính DataSource thành appointmentsCollection.

  8. Trên ngăn Dạng xem cây, hãy bung rộng bảng điều khiển EditForm1 rồi chọn bảng điều khiển Customer Name_DataCard3. Thay đổi thuộc tính Mặc định thành ThisItem.customer.name.

  9. Thay đổi thuộc tính Mặc định của các thẻ dữ liệu còn lại như sau:

  • Contact Number_DataCard2: ThisItem.customer.contactNumber; ngoài ra, thay đổi thuộc tính MaxLength thành 20
  • Problem Details_DataCard2: ThisItem.problemDetails
  • Status_DataCard5: ThisItem.appointmentStatus.statusName
  • Notes_DataCard3: ThisItem.notes
  • Image_DataCard2: ThisItem.imageUrl
  1. Trên ngăn Dạng xem cây, hãy bung rộng bảng điều khiển Problem Details_Card2. Đổi tên trường DataCardValueX (X sẽ là một số) trong bảng điều khiển này thành ProblemDetailsValue. Lặp lại quá trình này cho các điều khiển DataCardValueX trong những thẻ dữ liệu sau:

    • Status_DataCard5: StatusValue
    • Notes_DataCard3: NotesValue

    Lưu ý

    Bảng điều khiển hình ảnh sẽ được xử lý trong chương tiếp theo.

  2. Chọn ProblemDetailsValue và đặt thuộc tính MaxLength thành 100.

  3. Trên ngăn Dạng xem cây, chọn bảng điều khiển IconAccept1 trên màn hình EditAppointment. Đặt thuộc tính hành động OnSelect cho công thức sau.

    FieldEngineerAPI.putapiappointmentsid(BrowseAppointmentsGallery.Selected.id, {problemDetails:ProblemDetailsValue.Text, statusName:StatusValue.Selected.Value, notes:NotesValue.Text, imageUrl:""});
    
    Remove(appointmentsCollection, First(Filter(appointmentsCollection, id=BrowseAppointmentsGallery.Selected.id)));
    
    Set(appointmentRec, FieldEngineerAPI.getapiappointmentsid(BrowseAppointmentsGallery.Selected.id));
    
    Collect(appointmentsCollection, appointmentRec);
    
    Navigate(AppointmentDetails, ScreenTransition.None);
    

    Công thức này gọi hoạt động PUT cho bộ điều khiển Cuộc hẹn trong API Web. Công thức này chuyển ID cuộc hẹn cho cuộc hẹn hiện tại làm tham số đầu tiên, tiếp theo là các chi tiết mà người dùng có thể đã sửa đổi trên màn hình. Các chi tiết được chuyển dưới dạng một đối tượng JSON. Các câu lệnh Xóa, Đặt và Thu thập cập nhật bộ sưu tập appointmentsCollection với dữ liệu được lưu vào cơ sở dữ liệu.

    Lưu ý

    Không sử dụng hàm ClearCollect để xóa và làm mới toàn bộ bộ sưu tập trong các tình huống như thế này, vì sẽ rất lãng phí nếu—ví dụ—chỉ có một bản ghi đã thay đổi.

  4. Trên ngăn Dạng xem cây, chọn bảng điều khiển IconAccept1 trên màn hình EditAppointment. Đặt thuộc tính hành động OnSelect thành như sau.

    ResetForm(EditForm1);
    
    Navigate(AppointmentDetails, ScreenTransition.None);
    
  5. Trên ngăn bên trái trên tab Dữ liệu, hãy bấm chuột phải vào kết nối dữ liệu Cuộc hẹn, sau đó chọn Loại bỏ để xóa kết nối dữ liệu đó khỏi ứng dụng.

  6. Lưu ứng dụng.

  7. Chọn F5 để xem trước ứng dụng. Từ màn hình Chính, chuyển đến màn hình Cuộc hẹn, chọn và chỉnh sửa một cuộc hẹn, sau đó lưu các thay đổi. Xác minh rằng cuộc hẹn đã được cập nhật.

  8. Đóng cửa sổ xem trước và quay lại Power Apps Studio.

Tạo dịch vụ Tìm kiếm nhận thức Azure cho Cơ sở kiến thức của trường

Màn hình Cơ sở kiến thức trong ứng dụng hiện không được đính kèm với bất kỳ nguồn dữ liệu nào. API Web bao gồm các hoạt động để truy vấn và cập nhật các bảng Mẹo, BoilerPartsKỹ sư trong cơ sở dữ liệu KnowledgeDB. Tuy nhiên, mục đích của màn hình Truy vấn trong ứng dụng là để hỗ trợ tìm kiếm thông qua tất cả các bảng này. Khối lượng dữ liệu trong các bảng này có thể sẽ tăng lên nhanh chóng, vì vậy Maria, Kiana và Preeti quyết định triển khai Azure Cognitive Search để hỗ trợ tính năng này. Một ứng dụng có thể gửi truy vấn và nhận kết quả từ Tìm kiếm nhận thức Azure thông qua trình kết nối tùy chỉnh.

Azure Cognitive Search hoạt động tốt nhất nếu dữ liệu được tìm kiếm được chứa trong một thực thể cơ sở dữ liệu duy nhất. Kiana tạo một dạng xem trong cơ sở dữ liệu KnowledgeDB trình bày một dạng xem thống nhất về các bảng Mẹo, BoilerPartsKỹ sư như sau:

  1. Trong cổng thông tin Azure, hãy truy nhập vào trang KnowledgeDB SQL Database.

  2. Trên ngăn bên trái, hãy chọn Trình soạn thảo truy vấn và đăng nhập vào cơ sở dữ liệu với tư cách là sqladmin, sử dụng mật khẩu Pa55w.rd.

    Đăng nhập vào Cơ sở dữ liệu Azure SQL.

  3. Trong cửa sổ truy vấn, hãy nhập câu lệnh sau, rồi chọn Chạy.

    CREATE OR ALTER VIEW [dbo].[Knowledge] AS
    SELECT T.Id, T.Subject, T.Body, B.Name, B.Overview
    FROM [dbo].[Tips] T INNER JOIN [dbo].[BoilerParts] B
    ON B.Id=T.KnowledgeBaseBoilerPartId
    

    Tạo dạng xem "Kiến thức"

    Xác minh rằng dạng xem Kiến thức đã được tạo thành công.

  4. Trên ngăn bên trái, hãy chọn Chuỗi kết nối. Ghi chú chuỗi kết nối ADO.NET; bạn sẽ cần nó khi bạn đặt cấu hình Tìm kiếm nhận thức Azure.

    Chuỗi kết nối ADO.NET cho cơ sở dữ liệu KnowledgeDB.

Làm việc với Kiana, Preeti đặt cấu hình một phiên bản mới của dịch vụ Tìm kiếm nhận thức Azure để thực hiện tìm kiếm trên các hàng trong dạng xem Kiến thức như sau:

  1. Trên trang Chủ, trong cổng thông tin Azure, chọn + Tạo tài nguyên, nhập Tìm kiếm nhận thức Azure, chọn Nhập rồi chọn Tạo.

    Tạo dịch vụ Tìm kiếm nhận thức Azure.

  2. Trên trang Dịch vụ tìm kiếm mới, nhập các thiết đặt sau, sau đó chọn Xem lại + tạo:

    • Đăng ký: Chọn đăng ký Azure của bạn
    • Nhóm nguồn lực: webapi_rg
    • Tên dịch vụ: Nhập tên duy nhất cho dịch vụ
    • Tên vị trí: Chọn khu vực gần bạn nhất
    • Bậc định giá: Miễn phí
  3. Trên trang xác thực, hãy chọn Tạo và đợi trong khi dịch vụ được cung cấp.

  4. Chuyển đến trang cho dịch vụ tìm kiếm mới, chọn Tổng quan, hãy ghi chú lại Url (bạn sẽ cần Url này sau khi tạo trình kết nối tùy chỉnh cho Power Apps), rồi chọn Nhập dữ liệu.

    Trang tổng quan về Dịch vụ tìm kiếm.

  5. Trên trang Nhập dữ liệu, trong hộp danh sách thả xuống Nguồn dữ liệu, chọn Cơ sở dữ liệu Azure SQL.

    Chọn Cơ sở dữ liệu Azure SQL.

  6. Trên trang Kết nối với dữ liệu của bạn, hãy chỉ định các thiết đặt sau:

    • Nguồn dữ liệu: Cơ sở dữ liệu Azure SQL
    • Tên nguồn dữ liệu: cơ sở kiến thức
    • Chuỗi kết nối: Nhập chuỗi kết nối Cơ sở dữ liệu Azure SQL cho cơ sở dữ liệu KnowledgDB mà bạn đã ghi lại trước đó; trong chuỗi này, hãy đảm bảo đặt mật khẩu thành Pa55w.rd
    • Để các trường Id người dùngMật khẩu ở giá trị mặc định của chúng; các mục này được truy xuất từ chuỗi kết nối
  7. Chọn Kiểm tra kết nối. Đảm bảo rằng kiểm tra thành công, chọn [Kiến thức] trong hộp danh sách thả xuống Bảng/Dạng xem rồi chọn Tiếp theo: Thêm kỹ năng nhận thức (Tùy chọn).

    Chỉ định dạng xem tìm kiếm.

  8. Trên trang Thêm kỹ năng nhận thức (Tùy chọn), chọn Chuyển đến: Tùy chỉnh chỉ mục mục tiêu.

  9. Trên trang Tùy chỉnh chỉ mục mục tiêu, chọn Có thể truy xuất được cho tất cả các cột và Có thể tìm kiếm cho Chủ đề, Nội dung, TênTổng quan. Chọn Tiếp theo: Tạo một trình chỉ mục.

    Tùy chỉnh chỉ mục mục tiêu.

  10. Trên trang Tạo một trình chỉ mục, thay đổi trình lập chỉ mục Tên thành trình chỉ mục kiến thức. Đối với Lịch trình, chọn Hàng giờ, đặt Cột hình mờ cao thành Id rồi chọn Gửi đi:

    Tạo trình chỉ mục.

  11. Để kiểm tra trình chỉ mục, trên trang Tổng quan cho dịch vụ tìm kiếm, chọn Trình khám phá tìm kiếm:

    Chọn Trình khám phá tìm kiếm.

  12. Trong trường chuỗi Truy vấn, nhập một từ để tìm kiếm trong cơ sở kiến thức, sau đó chọn Tìm kiếm. Dịch vụ tìm kiếm sẽ tạo một danh sách các tài liệu có khớp trong các trường Chủ đề, Nội dung, Tên hoặc là Tổng quan và hiển thị chúng trong ngăn Kết quả. Ghi chú Yêu cầu URL và mẫu Các kết quả; bạn sẽ cần những mục này sau này như một yêu cầu mẫu và phản hồi khi bạn thiết lập trình kết nối tùy chỉnh Power Apps.

    Kết quả truy vấn tìm kiếm.

Tạo trình kết nối tùy chỉnh cho dịch vụ Tìm kiếm nhận thức Azure

Kiana hiện có thể tạo một trình kết nối tùy chỉnh Power Apps sử dụng để gửi các yêu cầu tìm kiếm đến dịch vụ tìm kiếm. Kiana thực hiện việc này bằng cách sử dụng Power Apps Studio như sau:

  1. Đăng nhập vào Power Apps.

  2. Trên ngăn bên trái, bung rộng Dữ liệu và chọn Trình kết nối tùy chỉnh. Trên ngăn bên phải, hãy chọn + Trình kết nối tùy chỉnh mới, và sau đó chọn Tạo từ chỗ trống:

    Trình kết nối tùy chỉnh mới.

  3. Trong hộp thoại Tạo từ chỗ trống, đặt tên trình kết nối mới thành VanArsdelKBConnector rồi chọn Tiếp tục:

    Tạo trình kết nối cơ sở kiến thức.

  4. Trên trang Thông tin chung, nhập mô tả và đặt Sơ đồ thành HTTPS. Trong ô Máy chủ, hãy nhập URL cho dịch vụ tìm kiếm của bạn (bạn đã lưu ý URL này trước đó), nhưng không có tiền tố https:// và sau đó chọn Bảo mật.

    Trình kết nối dịch vụ tìm kiếm Trang chung.

  5. Trên trang Bảo mật, trong hộp danh sách thả xuống Xác thực, chọn Mã API. Trong trường Nhãn tham số, nhập api-key. Trong trường Tên tham số, nhập api-key. Chọn Định nghĩa.

    Trình kết nối dịch vụ tìm kiếm trang Bảo mật.

  6. Trên trang Định nghĩa, chọn Hành động mới. Trong trường Tóm tắt, nhập Truy vấn. Trong trường Mô tả, nhập Truy vấn cơ sở kiến thức. Trong trường ID hoạt động, nhập Truy vấn. Trong Yêu cầu, chọn + Nhập từ mẫu.

    Trình kết nối dịch vụ tìm kiếm trang Định nghĩa.

  7. Trong hộp thoại Nhập từ mẫu, hãy nhập các giá trị sau, sau đó chọn Nhập:

    • Động từ: GET
    • URL: Cung cấp URL yêu cầu mẫu mà bạn đã lưu ý khi thử nghiệm dịch vụ tìm kiếm trong trình khám phá tìm kiếm trước đó
    • Tiêu đề: Content-type

    Nhập định nghĩa từ yêu cầu mẫu.

  8. Quay lại trang Định nghĩa, cuộn xuống Truy vấn, chọn nút dấu chấm lửng bên cạnh Tìm kiếm, và sau đó chọn Chỉnh sửa.

    Chỉnh sửa định nghĩa yêu cầu tìm kiếm.

  9. Trên màn hình chỉnh sửa, trong phần Thông số, trong trường Giá trị mặc định, hãy nhập dấu hoa thị (*). Để các trường khác ở giá trị mặc định của chúng, rồi chọn Trở lại.

    Đặt giá trị mặc định cho tìm kiếm.

  10. Trên trang Định nghĩa, trong Truy vấn, chọn nút dấu chấm lửng bên cạnh api-version, và sau đó chọn Chỉnh sửa.

    Chỉnh sửa phiên bản API.

  11. Trên màn hình chỉnh sửa, trong phần Tham số, trong trường Giá trị mặc định, nhập 2020-06-30-Preview (đây là phiên bản được liên kết với phiên bản hiện tại của Tìm kiếm nhận thức Azure; bạn có thể xem phiên bản trong URL yêu cầu mà bạn đã lưu ý trước đó). Đặt là bắt buộc thành và đặt Hiển thị thành nội bộ. Để các trường khác ở giá trị mặc định của chúng, rồi chọn Trở lại.

    Đặt các giá trị API cho các tham số tìm kiếm.

  12. Trên trang Định nghĩa, cuộn xuống Phản hồi và chọn + Thêm phản hồi mặc định.

    Thêm định nghĩa phản hồi mặc định.]

  13. Trong hộp thoại Nhập từ mẫu, trong trường Tiêu đề, nhập văn bản Content-type. Trong trường Nội dung, nhập các kết quả mẫu mà bạn đã ghi lại khi kiểm tra dịch vụ tìm kiếm, sau đó chọn Nhập.

    Nhập thông báo phản hồi từ một mẫu.

  14. Trên trang Định nghĩa, chọn phản hồi mặc định.

    Chọn câu trả lời mặc định.

  15. Trong trường Mô tả của phản hồi Content-type, nhập ứng dụng/json, và sau đó chọn Quay lại.

    Đặt nội dung tiêu đề thông báo phản hồi.

    Lưu ý

    Phần Nội dung trên trang này sẽ hiển thị các trường của phản hồi, chẳng hạn như Nội dung, Id, Tên, Tổng quanChủ đề nếu trường đó đã được phân tích cú pháp thành công.

  16. Chọn Tạo trình kết nối.

    Tạo trình kết nối Tìm kiếm Nhận thức Azure.

Trình kết nối phải được tạo mà không báo cáo bất kỳ lỗi hoặc cảnh báo nào.

Cập nhật ứng dụng để dùng Tìm kiếm nhận thức Azure: Cơ sở kiến thức của trường

Maria hiện có thể sử dụng trình kết nối tùy chỉnh trong ứng dụng. Nhưng trước tiên, cần có khóa để cấp cho Maria các đặc quyền cần thiết để kết nối với dịch vụ Tìm kiếm nhận thức Azure. Preeti lấy được khóa từ trang Khóa cho dịch vụ trong cổng Azure và đưa khóa này cho Maria.

Khóa dịch vụ tìm kiếm trong cổng Azure.

Maria chỉnh sửa ứng dụng trong Power Apps Studio và thực hiện các nhiệm vụ sau:

  1. Mở ứng dụng VanArsdelApp để chỉnh sửa.

  2. Trên menu Dạng xem, chọn Nguồn dữ liệu, và sau đó chọn Thêm dữ liệu.

    Thêm nguồn dữ liệu vào ứng dụng.

  3. Trong hộp Tìm kiếm ở phần Chọn nguồn dữ liệu, hãy nhập Van. Trình kết nối VanArdelKBConnector phải được liệt kê.

    Tìm kiếm trình kết nối Tìm kiếm Nhận thức Azure.

  4. Chọn trình kết nối VanArdelKBConnector. Trong VanArdelKBConnector, nhập khóa mà Preeti đã cung cấp cho dịch vụ tìm kiếm, sau đó chọn Kết nối.

    Nhập khóa API.

  5. Trên menu Tệp, lưu và đóng ứng dụng, sau đó mở lại. Bạn có thể được nhắc cho phép sử dụng trình kết nối tùy chỉnh khi ứng dụng mở lại.

    Lưu ý

    Bước này là cần thiết để kích hoạt trình kết nối tùy chỉnh.

  6. Trên ngăn Dạng xem cây, hãy bung rộng màn hình Knowledgebase rồi chọn bảng điều khiển TextSearchBox2. Nhập công thức sau cho hoạt động OnChange.

    If(!IsBlank(TextSearchBox2.Text), ClearCollect(azResult, VanArsdelKBConnector.Query({search: TextSearchBox2.Text}).value))
    

    Công thức này gọi hoạt động Truy vấn của trình kết nối tùy chỉnh tìm kiếm các mục khớp với cụm từ mà người dùng nhập vào hộp tìm kiếm. Kết quả được lưu trữ trong một bộ sưu tập có tên azResult.

  7. Trên ngăn Dạng xem cây, trên màn hình Knowledgebase, chọn bảng điều khiển BrowseGallery2. Đặt thuộc tính Mục thành azResult.

  8. Bung rộng bảng điều khiển BrowseGallery2 và loại bỏ bảng điều khiển Image4.

  9. Chọn tùy chọn điều khiển Title2. Thiết lập những thuộc tính sau:

    • Văn bản: ThisItem.Subject
    • X: 24
    • Chiều rộng: Parent.TemplateWidth - 104
  10. Chọn tùy chọn điều khiển Subtitle2. Đặt thuộc tính Văn bản thành ThisItem.Body.

  11. Chọn F5 để xem trước ứng dụng. Trên màn hình Knowledgebase, hãy nhập một cụm từ tìm kiếm, sau đó chọn Nhập. Các bài viết phù hợp từ cơ sở kiến thức sẽ được hiển thị.

    Truy vấn cơ sở kiến thức trong ứng dụng.

    Lưu ý

    Màn hình chi tiết vẫn chưa được tạo, vì vậy hãy chọn biểu tượng > bên cạnh một bài viết không hoạt động.

  12. Đóng cửa sổ xem trước và quay lại Power Apps Studio.

  13. Trên ngăn Dạng xem cây, nhấp chuột phải vào màn hình PartDetails, sau đó chọn Sao chép màn hình. Hành động này sẽ thêm một màn hình khác vào ứng dụng, có tên PartDetails_1.

    Sao chép màn hình PartDetails.

  14. Trên ngăn Dạng xem cây, đổi tên màn hình PartDetails_1 thành KnowledgebaseDetails.

    Chọn bảng điều khiển LblAppName X trên màn hình; đặt thuộc tính Văn bản thành "Chi tiết bài viết" (bao gồm cả phần trích dẫn).

  15. Trên ngăn Dạng xem cây, chọn bảng điều khiển DetailFormX trên màn hình. Thiết lập những thuộc tính sau:

    • Nguồn dữ liệu: azResult
    • Mục: BrowseGallery2.Selected

    Lưu ý

    BrowseGallery2 là bộ sưu tập duyệt trên màn hình Cơ sở kiến thức. Trong ứng dụng của bạn, thư viện này có thể có một tên khác.

  16. Trên ngăn Dạng xem cây, hãy bung rộng biểu mẫu DetailFormX sau đó thay đổi tên của các điều khiển thẻ dữ liệu sau:

    • Name_DataCard1_1: Name_DataCard
    • CategoryID_DataCard1_1: Subject_DataCard
    • Overview_DataCard1_1: Overview_DataCard
    • Price_DataCard1_1: Body_DataCard
  17. Xóa các bảng điều khiển NumberInStock_DataCard1_1Image_DataCard1_1.

  18. Chọn bảng điều khiển Name_DataCard. Đặt thuộc tính Mặc định thành ThisItem.Name.

  19. Chọn bảng điều khiển Subject_DataCard. Thiết lập những thuộc tính sau:

    • DataField: "Chủ đề"
    • DisplayName: "Chủ đề"
    • Mặc định: ThisItem.Subject
  20. Chọn bảng điều khiển Overview_DataCard. Đặt thuộc tính Mặc định thành ThisItem.Overview.

  21. Chọn bảng điều khiển Body_DataCard. Thiết lập những thuộc tính sau:

    • DataField: "Nội dung"
    • DisplayName: "Nội dung"
    • Mặc định: ThisItem.Body
  22. Chọn bảng điều khiển DataCardValueX trong bảng điều khiển Body_DataCard. Đặt thuộc tính Văn bản thành Parent.Default.

  23. Thay đổi kích thước từng bảng điều khiển thẻ dữ liệu để những bảng này nằm trải ra trên màn hình.

    Màn hình ArticleDetails.

  24. Chọn mũi tên quay lại trong tiêu đề màn hình. Thay đổi OnSelect thành Navigate(Knowledgebase, ScreenTransition.None).

  25. Trên ngăn Dạng xem cây, chọn màn hình Knowledgebase rồi chọn bảng điều khiển BrowseGalleryX. Thay đổi OnSelect thành Navigate(KnowledgebaseDetails, ScreenTransition.None). Hành động này hiển thị màn hình chi tiết cho bài viết cơ sở kiến thức khi người dùng chọn biểu tượng > cho một mục trong màn hình duyệt.

  26. Lưu ứng dụng.

  27. Chọn F5 để xem trước ứng dụng. Trên màn hình Knowledgebase, hãy nhập một cụm từ tìm kiếm, sau đó chọn Nhập. Chọn một bài viết và xác minh rằng các chi tiết của bài viết đó được hiển thị. Xác minh rằng biểu tượng Quay lại sẽ đưa người dùng trở lại màn hình duyệt.

  28. Đóng cửa sổ xem trước và quay lại Power Apps Studio.

Maria, Kiana và Preeti đã kết hợp thành công API Web và Tìm kiếm nhận thức Azure vào ứng dụng.