หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ตรรกะของเซิร์ฟเวอร์มีวัตถุที่มีอยู่ภายในภายใต้เนมสเปซของเซิร์ฟเวอร์ วัตถุเหล่านี้ทําให้การพัฒนาง่ายขึ้นโดยช่วยให้คุณบันทึกข้อความ เรียกบริการภายนอก ทํางานกับ Dataverse หรือรายละเอียดคําขอการเข้าถึง
HttpClient
ใช้ไคลเอ็นต์ HTTP เพื่อรวมกับบริการภายนอกโดยการส่งคําขอ HTTP
โน้ต
ในปัจจุบัน ตรรกะเซิร์ฟเวอร์สนับสนุนเฉพาะ application/json, text/html, และ application/x-www-form-urlencoded ชนิดเนื้อหาในเนื้อความคําขอ
ตัวอย่าง
รับ HTTP
let url = "https://contoso.com/objects";
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };
let response = await Server.Connector.HttpClient.GetAsync(url, header);
HTTP POST
let url = "https://contoso.com/objects";
let body = JSON.stringify({ name: "Sample Account" });
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };
let contentType = "application/json";
// Make the POST request
let response = await Server.Connector.HttpClient.PostAsync(url, body, header, contentType);
HTTP PUT
let url = "https://contoso.com/objects/6";
let body = JSON.stringify({ name: "Updated Sample Account" });
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };
let contentType = "application/json";
// Make the PUT request
let response = await Server.Connector.HttpClient.PutAsync(url, body, header, contentType);
โปรแกรมแก้ไข HTTP
let url = "https://contoso.com/objects/6";
let body = JSON.stringify({ name: "{\"capacity\": \"2 TB\"}" });
let header = { client_id: "00001111-aaaa-2222-bbbb-3333cccc4444" };
let contentType = "application/json";
// Make the PATCH request
let response = await Server.Connector.HttpClient.PatchAsync(url, body, header, contentType);
ลบ HTTP
let url = "https://contoso.com/objects/6";
let header = { contentType: "application/json" };
let response = await Server.Connector.HttpClient.DeleteAsync(url, header);
ตัวอย่าง: คำตอบ
{
"StatusCode": 200,
"Body": "JsonString",
"IsSuccessStatusCode": true,
"ReasonPhrase": "OK",
"ServerError": false,
"ServerErrorMessage": null,
"Headers": {
"Transfer-Encoding": "chunked",
"Connection": "keep-alive",
"Server": "",
"Content-Type": "application/json"
}
}
SiteSetting
ให้คุณสามารถอ่านค่าของการตั้งค่าไซต์สําหรับเว็บไซต์ปัจจุบันได้
โน้ต
อย่าจัดเก็บข้อมูลลับ เช่น คีย์ API หรือข้อมูลประจําตัว ในตรรกะเซิร์ฟเวอร์โดยตรง ให้เก็บไว้อย่างปลอดภัยใน Azure Key Vault สร้างแหล่งข้อมูลผ่านตัวแปรสภาพแวดล้อม และอ้างอิงโดยใช้การตั้งค่าไซต์
ตัวอย่าง
Server.SiteSetting.Get("Search/Enabled");
สภาพแวดล้อมที่สามารถใช้ได้
อ่านค่าของตัวแปรสภาพแวดล้อม
ตัวอย่าง
Server.EnvironmentVariable.get("SITEPATH");
เว็บไซต์
มีรายละเอียดของบันทึกเว็บไซต์ปัจจุบันใน Dataverse
ตัวอย่าง
Server.Website.adx_primarydomain;
ผู้ใช้
แสดงรายละเอียดของผู้ใช้ที่ลงชื่อเข้าใช้ แสดงค่า null ถ้าไม่ระบุชื่อ
ตัวอย่าง
Server.User.fullname;
Dataverse
Server.Connector.Dataverseใช้วัตถุเพื่อดําเนินการ CRUD ในตาราง Dataverse และเรียกใช้ API แบบกําหนดเอง
โน้ต
- เมื่อคุณอ้างอิงไปยังตาราง Dataverse ในโค้ดของคุณ ให้ใช้ EntitySetName ตัวอย่างเช่น เมื่อต้องการเข้าถึง
accountตาราง ให้ใช้ EntitySetNameaccounts
สร้างบันทึก
สร้างเรกคอร์ดใหม่
Server.Connector.Dataverse.CreateRecord(string entitySetName, string payload)
ตัวอย่าง
Server.Connector.Dataverse.CreateRecord("accounts", "{\"name\": \"Contoso Ltd.\", \"telephone1\": \"555-555-0100\", \"websiteurl\": \"https://contoso.com\"}");
ดึงบันทึก
ดึงข้อมูลเรกคอร์ดเดียวตามรหัส
Server.Connector.Dataverse.RetrieveRecord(string entitySetName, string id)
Server.Connector.Dataverse.RetrieveRecord(string entitySetName, string id, string options)
Server.Connector.Dataverse.RetrieveRecord(string entitySetName, string id, string options, bool skipCache)
ตัวอย่าง
Server.Connector.Dataverse.RetrieveRecord("accounts", "00000000-0000-0000-0000-000000000001", "$select=name,telephone1");
RetrieveMultipleRecords
เรียกใช้คอลเลกชันของระเบียน
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName)
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName, string options)
Server.Connector.Dataverse.RetrieveMultipleRecords(string entitySetName, string options, bool skipCache)
ตัวอย่าง
Server.Connector.Dataverse.RetrieveMultipleRecords("accounts", "$select=name,emailaddress1&$top=3");
อัปเดตเรคคอร์ด
อัปเดตระเบียนที่มีอยู่โดย ID
Server.Connector.Dataverse.UpdateRecord(string entitySetName, string id, string payload)
ตัวอย่าง
Server.Connector.Dataverse.UpdateRecord("accounts", "00000000-0000-0000-0000-000000000001", "{ \"telephone1\": \"555-555-0100\" }");
ลบเรคคอร์ด
ลบเรกคอร์ดตามรหัส
Server.Connector.Dataverse.DeleteRecord(string entitySetName, string id)
ตัวอย่าง
Server.Connector.Dataverse.DeleteRecord("accounts", "00000000-0000-0000-0000-000000000001");
เรียก CustomApi
Server.Connector.Dataverse.InvokeCustomApi(string httpMethod, string url, string payload = null)
เรียกใช้ฟังก์ชันที่ผูกไว้:
Server.Connector.Dataverse.InvokeCustomApi("get", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundFunction");
เรียกใช้การดําเนินการที่ผูกไว้:
Server.Connector.Dataverse.InvokeCustomApi("post", "accounts(00000000-0000-0000-0000-000000000001)/Microsoft.Dynamics.CRM.new_CustomBoundAction", "{ \"parameter1\": \"value1\" }");
เรียกใช้การดําเนินการที่ไม่ถูกผูกไว้:
Server.Connector.Dataverse.InvokeCustomApi("post", "new_Action", "{ \"parameter1\": \"value1\" }");
ตัวอย่าง: คำตอบ
{
"StatusCode": 204,
"Body": "",
"IsSuccessStatusCode": true,
"ReasonPhrase": "No Content",
"ServerError": false,
"ServerErrorMessage": null,
"Headers": {
"x-ms-cds-service-request-id": "00001111-aaaa-2222-bbbb-3333cccc4444"
}
}
ตัวบันทึก
ใช้ตัวบันทึกเพื่อเขียนข้อความการวินิจฉัยที่คุณสามารถดูในส่วนขยาย DevTools
ให้ใส่คำหรือวลีที่คุณกำลังค้นหาไว้ในเครื่องหมายคำพูด
Server.Logger.Log("Information message");
Server.Logger.Warn("Warning message");
Server.Logger.Error("Error message");
บริบท
วัตถุ Server.Context ให้ข้อมูลเกี่ยวกับการเรียกใช้ตรรกะของเซิร์ฟเวอร์ปัจจุบัน คุณสมบัติที่พร้อมใช้งานขึ้นอยู่กับว่าตรรกะเซิร์ฟเวอร์ถูกเรียกใช้ผ่านการร้องขอ HTTP หรือจากแม่แบบ Liquid
คุณสมบัติ
| ชื่อ | พร้อมใช้งานสําหรับ | รายละเอียด |
|---|---|---|
ActivityId |
HTTP และ Liquid | ตัวระบุที่ไม่ซ้ําสําหรับการเรียกใช้ตรรกะของเซิร์ฟเวอร์ ใช้ค่านี้เพื่อเชื่อมโยงแฟ้มบันทึกและแก้ไขปัญหาการดําเนินการ |
Body |
HTTP | เนื้อความคําขอ HTTP ดิบ |
FunctionName |
HTTP และ Liquid | ชื่อของฟังก์ชัน JavaScript ที่กําลังเรียกใช้ สําหรับการเรียกใช้ Liquid ค่านี้สอดคล้องกับ operation พารามิเตอร์ของ serverlogic แท็ก |
Headers |
HTTP | ส่วนหัวของคําขอ HTTP |
HttpMethod |
HTTP | วิธีการคําขอ HTTP เช่น GET, POST, PUT, PATCHหรือDELETE |
Input |
Liquid | สตริงอินพุตที่ให้มาผ่านพารามิเตอร์ของinputserverlogicแท็ก Liquid เมื่ออินพุตประกอบด้วยข้อมูลที่มีโครงสร้าง ให้แยกวิเคราะห์เป็น JSON ก่อนใช้งาน |
QueryParameters |
HTTP | พารามิเตอร์สตริงคิวรีจากคําขอ HTTP |
ServerLogicName |
HTTP และ Liquid | ชื่อของเรกคอร์ดตรรกะของเซิร์ฟเวอร์ที่กําลังเรียกใช้ |
Url |
HTTP | URL แบบเต็มของการร้องขอ HTTP |
เข้าถึงบริบทคําขอ HTTP
ตัวอย่างต่อไปนี้จะ id อ่านพารามิเตอร์คิวรีเมื่อมีการเรียกใช้ตรรกะเซิร์ฟเวอร์ผ่านคําขอ HTTP:
var id = Server.Context.QueryParameters["id"];
คุณยังสามารถเข้าถึงคําขอเมตาดาต้า:
function getRequestInformation() {
return JSON.stringify({
activityId: Server.Context.ActivityId,
functionName: Server.Context.FunctionName,
httpMethod: Server.Context.HttpMethod,
serverLogicName: Server.Context.ServerLogicName,
url: Server.Context.Url
});
}
เข้าถึงบริบทการเรียกใช้ Liquid
เมื่อมีการเรียกใช้ตรรกะเซิร์ฟเวอร์จาก Liquid ให้ใช้ Server.Context.Input เพื่ออ่านค่าที่ให้มาผ่านพารามิเตอร์ของ input แท็ก
ตัวอย่างเช่น สภาพคล่องต่อไปนี้จะผ่านการป้อนข้อมูล JSON:
{% assign inputData = '{"category":"active","maximumResults":5}' %}
{% serverlogic output: result, name: 'customer-summary', operation: 'getSummary', input: inputData %}
การดําเนินการตรรกะของเซิร์ฟเวอร์สามารถแยกวิเคราะห์ข้อมูลอินพุตและการเข้าถึงเกี่ยวกับการเรียกใช้ Liquid:
function getSummary() {
var input = JSON.parse(Server.Context.Input || "{}");
return JSON.stringify({
category: input.category,
maximumResults: input.maximumResults,
activityId: Server.Context.ActivityId,
functionName: Server.Context.FunctionName,
serverLogicName: Server.Context.ServerLogicName
});
}
ขั้นตอนถัดไป
วิธีการโต้ตอบกับตาราง Dataverse โดยใช้ตรรกะของเซิร์ฟเวอร์