Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi ActiveX) Yousign - Setup email notificationsDemonstrates how to setup email notifications based on events. An event is triggered when a user (or our API) make an action or when a status has changed. For more information, see https://dev.yousign.com/?version=latest#96b9f5ec-8e41-4d0f-82e5-6fa91adfa4fd
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB; ... procedure TForm1.Button1Click(Sender: TObject); var http: TChilkatHttp; success: Integer; json: TChilkatJsonObject; resp: IChilkatHttpResponse; sbResponseBody: TChilkatStringBuilder; jResp: TChilkatJsonObject; respStatusCode: Integer; subject: WideString; message: WideString; j: Integer; count_j: Integer; strVal: WideString; user: WideString; v_type: WideString; firstname: WideString; lastname: WideString; email: WideString; phone: WideString; position: Integer; comment: WideString; operationLevel: WideString; operationModeSmsConfig: WideString; fileId: WideString; fileName: WideString; fileType: WideString; fileContentType: WideString; fileDescription: WideString; fileCreatedAt: WideString; fileUpdatedAt: WideString; fileSha256: WideString; fileWorkspace: WideString; fileCreator: WideString; fileProtected: Integer; filePosition: Integer; fileParent: WideString; page: Integer; position_str: WideString; fieldName: WideString; mention: WideString; mention2: WideString; reason: WideString; k: Integer; count_k: Integer; contentType: WideString; sha256: WideString; v_protected: Integer; id: WideString; name: WideString; description: WideString; createdAt: WideString; updatedAt: WideString; finishedAt: WideString; expiresAt: WideString; status: WideString; creator: WideString; creatorFirstName: WideString; creatorLastName: WideString; workspace: WideString; template: Integer; ordered: Integer; parent: WideString; relatedFilesEnable: Integer; archive: Integer; i: Integer; count_i: Integer; begin // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. http := TChilkatHttp.Create(Self); // Implements the following CURL command: // curl --location --request POST 'https://staging-api.yousign.com/procedures' \ // --header 'Authorization: Bearer YOUR_API_KEY' \ // --header 'Content-Type: application/json' \ // --data-raw '{ // "name": "My first procedure with emails", // "description": "Powerful! Here is the description of my first procedure with emails", // "members": [ // { // "firstname": "John", // "lastname": "Doe", // "email": "john.doe@yousign.fr", // "phone": "+33612345678", // "fileObjects": [ // { // "file": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // "page": 2, // "position": "230,499,464,589", // "mention": "Read and approved", // "mention2": "Signed by John Doe" // } // ] // } // ], // "config": { // "email": { // "member.started": [ // { // "subject": "Hey! You are invited to sign!", // "message": "Hello <tag data-tag-type=\"string\" data-tag-name=\"recipient.firstname\"></tag> <tag data-tag-type=\"string\" data-tag-name=\"recipient.lastname\"></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type=\"button\" data-tag-name=\"url\" data-tag-title=\"Access to documents\">Access to documents</tag>", // "to": ["@member"] // } // ], // "procedure.started": [ // { // "subject": "John, created a procedure your API have.", // "message": "The content of this email is totally awesome.", // "to": ["@creator", "@members", "billing@yousign.fr"] // } // ] // } // } // }' // Use the following online tool to generate HTTP code from a CURL command // Convert a cURL Command to HTTP Source Code // Use this online tool to generate code from sample JSON: // Generate Code to Create JSON // The following JSON is sent in the request body. // { // "name": "My first procedure with emails", // "description": "Powerful! Here is the description of my first procedure with emails", // "members": [ // { // "firstname": "John", // "lastname": "Doe", // "email": "john.doe@yousign.fr", // "phone": "+33612345678", // "fileObjects": [ // { // "file": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // "page": 2, // "position": "230,499,464,589", // "mention": "Read and approved", // "mention2": "Signed by John Doe" // } // ] // } // ], // "config": { // "email": { // "member.started": [ // { // "subject": "Hey! You are invited to sign!", // "message": "Hello <tag data-tag-type=", // " data-tag-name=": <tag, // "button": [ // "@member" // ] // } // ], // "procedure.started": [ // { // "subject": "John, created a procedure your API have.", // "message": "The content of this email is totally awesome.", // "to": [ // "@creator", // "@members", // "billing@yousign.fr" // ] // } // ] // } // } // } json := TChilkatJsonObject.Create(Self); json.UpdateString('name','My first procedure with emails'); json.UpdateString('description','Powerful! Here is the description of my first procedure with emails'); json.UpdateString('members[0].firstname','John'); json.UpdateString('members[0].lastname','Doe'); json.UpdateString('members[0].email','john.doe@yousign.fr'); json.UpdateString('members[0].phone','+33612345678'); // Use the actual file ID here... json.UpdateString('members[0].fileObjects[0].file','/files/23686fbe-3ae1-4de9-9e01-58bbf29b2b18'); json.UpdateInt('members[0].fileObjects[0].page',2); json.UpdateString('members[0].fileObjects[0].position','230,499,464,589'); json.UpdateString('members[0].fileObjects[0].mention','Read and approved'); json.UpdateString('members[0].fileObjects[0].mention2','Signed by John Doe'); json.UpdateString('config.email."member.started"[0].subject','Hey! You are invited to sign!'); json.UpdateString('config.email."member.started"[0].message','Hello <tag data-tag-type="string" data-tag-name="recipient.firstname"></tag> <tag data-tag-type="string" data-tag-name="recipient.lastname"></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type="button" data-tag-name="url" data-tag-title="Access to documents">Access to documents</tag>'); json.UpdateString('config.email."member.started"[0].to[0]','@member'); json.UpdateString('config.email."procedure.started"[0].subject','John, created a procedure your API have.'); json.UpdateString('config.email."procedure.started"[0].message','The content of this email is totally awesome.'); json.UpdateString('config.email."procedure.started"[0].to[0]','@creator'); json.UpdateString('config.email."procedure.started"[0].to[1]','@members'); json.UpdateString('config.email."procedure.started"[0].to[2]','billing@yousign.fr'); // Adds the "Authorization: Bearer YOUR_API_KEY" header. http.AuthToken := 'YOUR_API_KEY'; http.SetRequestHeader('Content-Type','application/json'); resp := http.PostJson3('https://staging-api.yousign.com/procedures','application/json',json.ControlInterface); if (http.LastMethodSuccess = 0) then begin Memo1.Lines.Add(http.LastErrorText); Exit; end; sbResponseBody := TChilkatStringBuilder.Create(Self); resp.GetBodySb(sbResponseBody.ControlInterface); jResp := TChilkatJsonObject.Create(Self); jResp.LoadSb(sbResponseBody.ControlInterface); jResp.EmitCompact := 0; Memo1.Lines.Add('Response Body:'); Memo1.Lines.Add(jResp.Emit()); respStatusCode := resp.StatusCode; Memo1.Lines.Add('Response Status Code = ' + IntToStr(respStatusCode)); if (respStatusCode >= 400) then begin Memo1.Lines.Add('Response Header:'); Memo1.Lines.Add(resp.Header); Memo1.Lines.Add('Failed.'); Exit; end; // Sample JSON response: // (Sample code for parsing the JSON response is shown below) // { // "id": "/procedures/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // "name": "My first procedure with emails", // "description": "Powerful! Here is the description of my first procedure with emails", // "createdAt": "2018-12-05T06:53:34+01:00", // "updatedAt": "2018-12-05T06:53:34+01:00", // "finishedAt": null, // "expiresAt": null, // "status": "active", // "creator": null, // "creatorFirstName": null, // "creatorLastName": null, // "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // "template": false, // "ordered": false, // "parent": null, // "metadata": [ // ], // "config": { // "email": { // "procedure.started": [ // { // "subject": "John, created a procedure your API have.", // "message": "The content of this email is totally awesome.", // "to": [ // "@creator", // "@members", // "billing@yousign.fr" // ] // } // ], // "member.started": [ // { // "subject": "Hey! You are invited to sign!", // "message": "Hello <tag data-tag-type=\"string\" data-tag-name=\"recipient.firstname\"></tag> <tag data-tag-type=\"string\" data-tag-name=\"recipient.lastname\"></tag>, <br><br> You have ben invited to sign a document, please click on the following button to read it: <tag data-tag-type=\"button\" data-tag-name=\"url\" data-tag-title=\"Access to documents\">Access to documents</tag>", // "to": [ // "@member" // ] // } // ] // } // }, // "members": [ // { // "id": "/members/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // "user": null, // "type": "signer", // "firstname": "John", // "lastname": "Doe", // "email": "john.doe@yousign.fr", // "phone": "+33612345678", // "position": 1, // "createdAt": "2018-12-05T06:53:34+01:00", // "updatedAt": "2018-12-05T06:53:34+01:00", // "finishedAt": null, // "status": "pending", // "fileObjects": [ // { // "id": "/file_objects/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // "file": { // "id": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // "name": "The best name for my file.pdf", // "type": "signable", // "contentType": "application/pdf", // "description": null, // "createdAt": "2018-12-05T06:52:54+01:00", // "updatedAt": "2018-12-05T06:53:34+01:00", // "sha256": "bb57ae2b2ca6ad0133a699350d1a6f6c8cdfde3cf872cf526585d306e4675cc2", // "metadata": [ // ], // "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // "creator": null, // "protected": false, // "position": 0, // "parent": null // }, // "page": 2, // "position": "230,499,464,589", // "fieldName": null, // "mention": "Read and approved", // "mention2": "Signed by John Doe", // "createdAt": "2018-12-05T06:53:34+01:00", // "updatedAt": "2018-12-05T06:53:34+01:00", // "parent": null, // "reason": "Signed by Yousign" // } // ], // "comment": null, // "notificationsEmail": [ // ], // "operationLevel": "custom", // "operationCustomModes": [ // "sms" // ], // "operationModeSmsConfig": null, // "parent": null // } // ], // "subscribers": [ // ], // "files": [ // { // "id": "/files/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // "name": "The best name for my file.pdf", // "type": "signable", // "contentType": "application/pdf", // "description": null, // "createdAt": "2018-12-05T06:52:54+01:00", // "updatedAt": "2018-12-05T06:53:34+01:00", // "sha256": "bb57ae2b2ca6ad0133a699350d1a6f6c8cdfde3cf872cf526585d306e4675cc2", // "metadata": [ // ], // "workspace": "/workspaces/XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX", // "creator": null, // "protected": false, // "position": 0, // "parent": null // } // ], // "relatedFilesEnable": false, // "archive": false, // "archiveMetadata": [ // ], // "fields": [ // ], // "permissions": [ // ] // } // Sample code for parsing the JSON response... // Use the following online tool to generate parsing code from sample JSON: // Generate Parsing Code from JSON id := jResp.StringOf('id'); name := jResp.StringOf('name'); description := jResp.StringOf('description'); createdAt := jResp.StringOf('createdAt'); updatedAt := jResp.StringOf('updatedAt'); finishedAt := jResp.StringOf('finishedAt'); expiresAt := jResp.StringOf('expiresAt'); status := jResp.StringOf('status'); creator := jResp.StringOf('creator'); creatorFirstName := jResp.StringOf('creatorFirstName'); creatorLastName := jResp.StringOf('creatorLastName'); workspace := jResp.StringOf('workspace'); template := jResp.BoolOf('template'); ordered := jResp.BoolOf('ordered'); parent := jResp.StringOf('parent'); relatedFilesEnable := jResp.BoolOf('relatedFilesEnable'); archive := jResp.BoolOf('archive'); i := 0; count_i := jResp.SizeOfArray('metadata'); while i < count_i do begin jResp.I := i; i := i + 1; end; i := 0; count_i := jResp.SizeOfArray('config.email."procedure.started"'); while i < count_i do begin jResp.I := i; subject := jResp.StringOf('config.email."procedure.started"[i].subject'); message := jResp.StringOf('config.email."procedure.started"[i].message'); j := 0; count_j := jResp.SizeOfArray('config.email."procedure.started"[i].to'); while j < count_j do begin jResp.J := j; strVal := jResp.StringOf('config.email."procedure.started"[i].to[j]'); j := j + 1; end; i := i + 1; end; i := 0; count_i := jResp.SizeOfArray('config.email."member.started"'); while i < count_i do begin jResp.I := i; subject := jResp.StringOf('config.email."member.started"[i].subject'); message := jResp.StringOf('config.email."member.started"[i].message'); j := 0; count_j := jResp.SizeOfArray('config.email."member.started"[i].to'); while j < count_j do begin jResp.J := j; strVal := jResp.StringOf('config.email."member.started"[i].to[j]'); j := j + 1; end; i := i + 1; end; i := 0; count_i := jResp.SizeOfArray('members'); while i < count_i do begin jResp.I := i; id := jResp.StringOf('members[i].id'); user := jResp.StringOf('members[i].user'); v_type := jResp.StringOf('members[i].type'); firstname := jResp.StringOf('members[i].firstname'); lastname := jResp.StringOf('members[i].lastname'); email := jResp.StringOf('members[i].email'); phone := jResp.StringOf('members[i].phone'); position := jResp.IntOf('members[i].position'); createdAt := jResp.StringOf('members[i].createdAt'); updatedAt := jResp.StringOf('members[i].updatedAt'); finishedAt := jResp.StringOf('members[i].finishedAt'); status := jResp.StringOf('members[i].status'); comment := jResp.StringOf('members[i].comment'); operationLevel := jResp.StringOf('members[i].operationLevel'); operationModeSmsConfig := jResp.StringOf('members[i].operationModeSmsConfig'); parent := jResp.StringOf('members[i].parent'); j := 0; count_j := jResp.SizeOfArray('members[i].fileObjects'); while j < count_j do begin jResp.J := j; id := jResp.StringOf('members[i].fileObjects[j].id'); fileId := jResp.StringOf('members[i].fileObjects[j].file.id'); fileName := jResp.StringOf('members[i].fileObjects[j].file.name'); fileType := jResp.StringOf('members[i].fileObjects[j].file.type'); fileContentType := jResp.StringOf('members[i].fileObjects[j].file.contentType'); fileDescription := jResp.StringOf('members[i].fileObjects[j].file.description'); fileCreatedAt := jResp.StringOf('members[i].fileObjects[j].file.createdAt'); fileUpdatedAt := jResp.StringOf('members[i].fileObjects[j].file.updatedAt'); fileSha256 := jResp.StringOf('members[i].fileObjects[j].file.sha256'); fileWorkspace := jResp.StringOf('members[i].fileObjects[j].file.workspace'); fileCreator := jResp.StringOf('members[i].fileObjects[j].file.creator'); fileProtected := jResp.BoolOf('members[i].fileObjects[j].file.protected'); filePosition := jResp.IntOf('members[i].fileObjects[j].file.position'); fileParent := jResp.StringOf('members[i].fileObjects[j].file.parent'); page := jResp.IntOf('members[i].fileObjects[j].page'); position_str := jResp.StringOf('members[i].fileObjects[j].position'); fieldName := jResp.StringOf('members[i].fileObjects[j].fieldName'); mention := jResp.StringOf('members[i].fileObjects[j].mention'); mention2 := jResp.StringOf('members[i].fileObjects[j].mention2'); createdAt := jResp.StringOf('members[i].fileObjects[j].createdAt'); updatedAt := jResp.StringOf('members[i].fileObjects[j].updatedAt'); parent := jResp.StringOf('members[i].fileObjects[j].parent'); reason := jResp.StringOf('members[i].fileObjects[j].reason'); k := 0; count_k := jResp.SizeOfArray('members[i].fileObjects[j].file.metadata'); while k < count_k do begin jResp.K := k; k := k + 1; end; j := j + 1; end; j := 0; count_j := jResp.SizeOfArray('members[i].notificationsEmail'); while j < count_j do begin jResp.J := j; j := j + 1; end; j := 0; count_j := jResp.SizeOfArray('members[i].operationCustomModes'); while j < count_j do begin jResp.J := j; strVal := jResp.StringOf('members[i].operationCustomModes[j]'); j := j + 1; end; i := i + 1; end; i := 0; count_i := jResp.SizeOfArray('subscribers'); while i < count_i do begin jResp.I := i; i := i + 1; end; i := 0; count_i := jResp.SizeOfArray('files'); while i < count_i do begin jResp.I := i; id := jResp.StringOf('files[i].id'); name := jResp.StringOf('files[i].name'); v_type := jResp.StringOf('files[i].type'); contentType := jResp.StringOf('files[i].contentType'); description := jResp.StringOf('files[i].description'); createdAt := jResp.StringOf('files[i].createdAt'); updatedAt := jResp.StringOf('files[i].updatedAt'); sha256 := jResp.StringOf('files[i].sha256'); workspace := jResp.StringOf('files[i].workspace'); creator := jResp.StringOf('files[i].creator'); v_protected := jResp.BoolOf('files[i].protected'); position := jResp.IntOf('files[i].position'); parent := jResp.StringOf('files[i].parent'); j := 0; count_j := jResp.SizeOfArray('files[i].metadata'); while j < count_j do begin jResp.J := j; j := j + 1; end; i := i + 1; end; i := 0; count_i := jResp.SizeOfArray('archiveMetadata'); while i < count_i do begin jResp.I := i; i := i + 1; end; i := 0; count_i := jResp.SizeOfArray('fields'); while i < count_i do begin jResp.I := i; i := i + 1; end; i := 0; count_i := jResp.SizeOfArray('permissions'); while i < count_i do begin jResp.I := i; i := i + 1; end; end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.