Mailscanner (Mail Converter)
Several Mailscanner classes are now exendable via SDK::setClass:
- MailScanner
- MailScannerAction
- MailScannerInfo
- MailScannerRule
- MailScannerSpam
- MailScannerMailBox
- MailScannerMailBoxZend
This allows for easier extensibility using our standard SDK.
Moreover, the list of actions (for example: Create Ticket, Update Ticket, ...) for each rule is now stored in the database and not hardcoded in various files. So adding a new a new action is much easier now:
require_once 'modules/Settings/MailScanner/core/MailScannerAction.php';
// extend the class to implement custom actions
SDK::setClass('MailScannerAction', 'MailScannerActionCustom', 'modules/SDK/src/CUSTOMER/MailScannerActionCustom.php');
// add an action to create a task (custom module, or even Calendar)
MailScannerAction::addActionType('CREATE,Task,FROM', 'LBL_CREATE_MS_TASK', 'createTask');
// add the label
SDK::setLanguageEntries('Settings', 'LBL_CREATE_MS_TASK', ['it_it' => 'Crea compito', 'en_us' => 'Create task']);
And the extended class in MailScannerActionCustom.php:
<?php
class MailScannerActionCustom extends MailScannerAction {
/**
* Example of a custom mailscanner action
*/
function createTask($mailscanner, $mailrecord, $regexMatchInfo, $compare_parentid, $match_field) {
$subject = $mailrecord->_subject;
$description = $mailrecord->getBodyText();
// create a record "CustomTask"
$inst = \CRMEntity::getInstance('CustomTask');
$inst->mode = '';
// populate some fields
$inst->column_fields['taskname'] = $subject;
$inst->column_fields['description'] = $description;
$inst->column_fields['date'] = date('Y-m-d');
// save it
$inst->save('CustomTask');
// Associate any attachement of the email to the record
$this->__SaveAttachements($mailrecord, $inst->modulename, $inst, $inst);
// create the Messages record
$this->__CreateNewEmail($mailrecord, $this->module, $inst);
// return the record id, to signal the correct application of the action
return $inst->id;
}
}
Will produce a new action in the rule:
