Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(Excel) 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
' This example assumes the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. Dim http As Chilkat.Http Set http = Chilkat.NewHttp ' 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" ' ] ' } ' ] ' } ' } ' } Dim json As Chilkat.JsonObject Set json = Chilkat.NewJsonObject Dim success As Boolean success = json.UpdateString("name","My first procedure with emails") success = json.UpdateString("description","Powerful! Here is the description of my first procedure with emails") success = json.UpdateString("members[0].firstname","John") success = json.UpdateString("members[0].lastname","Doe") success = json.UpdateString("members[0].email","john.doe@yousign.fr") success = json.UpdateString("members[0].phone","+33612345678") ' Use the actual file ID here... success = json.UpdateString("members[0].fileObjects[0].file","/files/23686fbe-3ae1-4de9-9e01-58bbf29b2b18") success = json.UpdateInt("members[0].fileObjects[0].page",2) success = json.UpdateString("members[0].fileObjects[0].position","230,499,464,589") success = json.UpdateString("members[0].fileObjects[0].mention","Read and approved") success = json.UpdateString("members[0].fileObjects[0].mention2","Signed by John Doe") success = json.UpdateString("config.email.""member.started""[0].subject","Hey! You are invited to sign!") success = 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>") success = json.UpdateString("config.email.""member.started""[0].to[0]","@member") success = json.UpdateString("config.email.""procedure.started""[0].subject","John, created a procedure your API have.") success = json.UpdateString("config.email.""procedure.started""[0].message","The content of this email is totally awesome.") success = json.UpdateString("config.email.""procedure.started""[0].to[0]","@creator") success = json.UpdateString("config.email.""procedure.started""[0].to[1]","@members") success = 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" Set resp = http.PostJson3("https://staging-api.yousign.com/procedures","application/json",json) If (http.LastMethodSuccess = False) Then Debug.Print http.LastErrorText Exit Sub End If Dim sbResponseBody As Chilkat.StringBuilder Set sbResponseBody = Chilkat.NewStringBuilder success = resp.GetBodySb(sbResponseBody) Dim jResp As Chilkat.JsonObject Set jResp = Chilkat.NewJsonObject success = jResp.LoadSb(sbResponseBody) jResp.EmitCompact = False Debug.Print "Response Body:" Debug.Print jResp.Emit() respStatusCode = resp.StatusCode Debug.Print "Response Status Code = "; respStatusCode If (respStatusCode >= 400) Then Debug.Print "Response Header:" Debug.Print resp.Header Debug.Print "Failed." Exit Sub End If ' 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") Do While i < count_i jResp.I = i i = i + 1 Loop i = 0 count_i = jResp.SizeOfArray("config.email.""procedure.started""") Do While i < count_i 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") Do While j < count_j jResp.J = j strVal = jResp.StringOf("config.email.""procedure.started""[i].to[j]") j = j + 1 Loop i = i + 1 Loop i = 0 count_i = jResp.SizeOfArray("config.email.""member.started""") Do While i < count_i 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") Do While j < count_j jResp.J = j strVal = jResp.StringOf("config.email.""member.started""[i].to[j]") j = j + 1 Loop i = i + 1 Loop i = 0 count_i = jResp.SizeOfArray("members") Do While i < count_i 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") Do While j < count_j 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") Do While k < count_k jResp.K = k k = k + 1 Loop j = j + 1 Loop j = 0 count_j = jResp.SizeOfArray("members[i].notificationsEmail") Do While j < count_j jResp.J = j j = j + 1 Loop j = 0 count_j = jResp.SizeOfArray("members[i].operationCustomModes") Do While j < count_j jResp.J = j strVal = jResp.StringOf("members[i].operationCustomModes[j]") j = j + 1 Loop i = i + 1 Loop i = 0 count_i = jResp.SizeOfArray("subscribers") Do While i < count_i jResp.I = i i = i + 1 Loop i = 0 count_i = jResp.SizeOfArray("files") Do While i < count_i 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") Do While j < count_j jResp.J = j j = j + 1 Loop i = i + 1 Loop i = 0 count_i = jResp.SizeOfArray("archiveMetadata") Do While i < count_i jResp.I = i i = i + 1 Loop i = 0 count_i = jResp.SizeOfArray("fields") Do While i < count_i jResp.I = i i = i + 1 Loop i = 0 count_i = jResp.SizeOfArray("permissions") Do While i < count_i jResp.I = i i = i + 1 Loop |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.