Hi,
TheWriteCRM.com
is software as a service website for the writing industry. We provide many services for our users including CRM, project management, document management and much more. Several months ago we decided to use the GroupDocs API to help us add some really cool features with user’s documents. We implemented esignature using the esignature process by way of your php examples that are located here: http://groupdocs-php-samples.herokuapp.com/
. In these examples it clearly instructs the user to create an envelope and pass in a callback URL, and add a signature field to the document with x and y coordinates.
It’s great that you now have an API endpoint URL now that is so easy to use ( https://apps.groupdocs.com/signature2/documents/signembed/{file GUID}
).
However we can’t implement this on our site just yet. In order for GroupDocs API esignature to work for thewritecrm.com
the following must happen:
-
Users must be able to sign a document or send a document to others for signing. On our site its not always going to be the logged on user who will be signing the doc. Sometimes I have a document that I would like to send to someone else for signing.
-
Users must be able to sign the document on the signature line that is provided in the contents of that document. Because users will be uploading their own documents we won’t know anything about the document they want to sign. This is why dragging the signature box into place is so important.
-
We must have a callback function from the signing process so we can get vital data such as signing status and a copy of the PDF file that is generated from the signing (the signed doc with groupdocs seal).
Rather than extending the API to add callback function to the endpoint you recommeded ( https://apps.groupdocs.com/signature2/documents/signembed/{file GUID}
) why not extend the api to add a draggable signature field onto a doc when creating an envelope (as this is what we have already implemented).
As of now we have implemented esignature where we add signature box this way:
try {
$signFieldEnvelopSettings = new SignatureEnvelopeFieldSettingsInfo();
$signFieldEnvelopSettings->locationX = "0.15";
$signFieldEnvelopSettings->locationY = "0.93";
$signFieldEnvelopSettings->locationWidth = "150";
$signFieldEnvelopSettings->locationHeight = "50";
$signFieldEnvelopSettings->name = "test" . rand(0, 500);
$signFieldEnvelopSettings->forceNewField = true;
$signFieldEnvelopSettings->page = $pageCount;
$addEnvelopField = $signature->AddSignatureEnvelopeField($this->clientId, $envelop->result->envelope->id, $getDocuments->result->documents[0]->documentId, $getRecipient->result->recipients[$i]->id, "0545e589fb3e27c9bb7a1f59d0e3fcb9", $signFieldEnvelopSettings);
$recipients[] = $recip; //add the recipient object to recipients array
} catch (Exception $e) {
$error = 'getDocument->status does not equal ok ERROR: ' . $e->getMessage() . "\n";
$this->logErrorDB($error); //DEBUG log error in db
}
It would be best if you could extend your API so I could create a signature box that is draggable without having to change all the work, time and money that have been spent implementing this esignature feature on our site.
My preference would be something like this added to the create envelope and signature process:
try {
$signFieldEnvelopSettings = new SignatureEnvelopeFieldSettingsInfo();
$signFieldEnvelopSettings->draggable = true;
$signFieldEnvelopSettings->locationWidth = "150";
$signFieldEnvelopSettings->locationHeight = "50";
$signFieldEnvelopSettings->name = "test" . rand(0, 500);
$signFieldEnvelopSettings->forceNewField = true;
$signFieldEnvelopSettings->page = $pageCount;
$addEnvelopField = $signature->AddSignatureEnvelopeField($this->clientId, $envelop->result->envelope->id, $getDocuments->result->documents[0]->documentId, $getRecipient->result->recipients[$i]->id, "0545e589fb3e27c9bb7a1f59d0e3fcb9", $signFieldEnvelopSettings);
$recipients[] = $recip; //add the recipient object to recipients array
} catch (Exception $e) {
$error = 'getDocument->status does not equal ok ERROR: ' . $e->getMessage() . "\n";
$this->logErrorDB($error); //DEBUG log error in db
}
The last concern that we have is that if you provide a new SDK will the other features in the SDK still be backwards compatible? It seems like you have a new version of the SDK that was committed 12 days ago. (groupdocs cloud SDKs). Because of the large time and money investment of developing around your API and SDK we can’t afford to upgrade to the newest version of the SDK each time there is a new version if there isn’t backwards compatibility for other features.