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
(PHP Extension) 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
<?php // The version number (9_5_0) should match version of the Chilkat extension used, omitting the micro-version number. // For example, if using Chilkat v9.5.0.48, then include as shown here: include("chilkat_9_5_0.php"); // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. $http = new CkHttp(); // 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 = new CkJsonObject(); $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->put_AuthToken('YOUR_API_KEY'); $http->SetRequestHeader('Content-Type','application/json'); // resp is a CkHttpResponse $resp = $http->PostJson3('https://staging-api.yousign.com/procedures','application/json',$json); if ($http->get_LastMethodSuccess() == false) { print $http->lastErrorText() . "\n"; exit; } $sbResponseBody = new CkStringBuilder(); $resp->GetBodySb($sbResponseBody); $jResp = new CkJsonObject(); $jResp->LoadSb($sbResponseBody); $jResp->put_EmitCompact(false); print 'Response Body:' . "\n"; print $jResp->emit() . "\n"; $respStatusCode = $resp->get_StatusCode(); print 'Response Status Code = ' . $respStatusCode . "\n"; if ($respStatusCode >= 400) { print 'Response Header:' . "\n"; print $resp->header() . "\n"; print 'Failed.' . "\n"; exit; } // 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) { $jResp->put_I($i); $i = $i + 1; } $i = 0; $count_i = $jResp->SizeOfArray('config.email.\'procedure.started\''); while ($i < $count_i) { $jResp->put_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) { $jResp->put_J($j); $strVal = $jResp->stringOf('config.email.\'procedure.started\'[i].to[j]'); $j = $j + 1; } $i = $i + 1; } $i = 0; $count_i = $jResp->SizeOfArray('config.email.\'member.started\''); while ($i < $count_i) { $jResp->put_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) { $jResp->put_J($j); $strVal = $jResp->stringOf('config.email.\'member.started\'[i].to[j]'); $j = $j + 1; } $i = $i + 1; } $i = 0; $count_i = $jResp->SizeOfArray('members'); while ($i < $count_i) { $jResp->put_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) { $jResp->put_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) { $jResp->put_K($k); $k = $k + 1; } $j = $j + 1; } $j = 0; $count_j = $jResp->SizeOfArray('members[i].notificationsEmail'); while ($j < $count_j) { $jResp->put_J($j); $j = $j + 1; } $j = 0; $count_j = $jResp->SizeOfArray('members[i].operationCustomModes'); while ($j < $count_j) { $jResp->put_J($j); $strVal = $jResp->stringOf('members[i].operationCustomModes[j]'); $j = $j + 1; } $i = $i + 1; } $i = 0; $count_i = $jResp->SizeOfArray('subscribers'); while ($i < $count_i) { $jResp->put_I($i); $i = $i + 1; } $i = 0; $count_i = $jResp->SizeOfArray('files'); while ($i < $count_i) { $jResp->put_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) { $jResp->put_J($j); $j = $j + 1; } $i = $i + 1; } $i = 0; $count_i = $jResp->SizeOfArray('archiveMetadata'); while ($i < $count_i) { $jResp->put_I($i); $i = $i + 1; } $i = 0; $count_i = $jResp->SizeOfArray('fields'); while ($i < $count_i) { $jResp->put_I($i); $i = $i + 1; } $i = 0; $count_i = $jResp->SizeOfArray('permissions'); while ($i < $count_i) { $jResp->put_I($i); $i = $i + 1; } ?> |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.