Przejdź do głównej treści

Powiadomienia systemowe


System Rready__™ może wysyłać jeszcze inne rodzaje powiadomień, takie jak notyfikacje w strumieniu powiadomień, powiadomienie w wiadomości email, wiadomość na czacie czy utworzyć notatkę służbową.

Strumień powiadomień
Strumień powiadomień

Do tego rodzaju powiadomienia do użytkowników można wysyłać przy użyciu metody notifyUser() lokalnego API lub tworząc obiekt klasy Notifier.

Wykorzystanie lokalnego API

Definicja EDokApi::notifyUser()

/**
 * Powiadom jednego lub więcej użytkowników
 *
 * @param array $data - Tablica z parametrami
 *
 * @return True - zawsze zwraca TRUE
 *
 * @throws Exception - W zależności od wywołania SOAP - SoapFault, Lokalnie - Exception
 */
public function notifyUser($data)

Opis parametrów

Metoda przyjmuje 1 argument, jako tablica lub string JSON. Dostępne klucze:

Nazwa parametruTyp parametruOpis
usr_idint[] (wymagane)Identyfikator(y) użytkownika (users.usr_id)
msgtxtstring (wymagane)Treść powiadomienia
type__string, string[]Wybór kanału komunikacji. Wybrane opcje można przesłać jako string (zarówno pojedynczą wartość, jak kilka wybranych opcji, oddzielonych od siebie przecinkiem) lub jako tablicę stringów.
  • Communicator - wysyła powiadomienie w strumieniu powiadomień
  • Mail - wysyła email z wiadomością
  • Document - tworzy notatke służbową dla użytkownika

Jeśli nie ustawimy tego parametru, wybrany zostanie domyślny kanał czyli Communicator.
metaDataarrayTablica z kluczami do metadanych obiektów biznesowych do których prowadzą przyciski na powiadomieniu.
nscls_stringNazwa klasy obiektu biznesowego pierwszego przycisku
nskey_intId obiektu biznesowego pierwszego przycisku
ntcls_stringNazwa klasy obiektu biznesowego drugiego przycisku
ntkey_intId obiektu biznesowego drugiego przycisku

Przykład użycia

require_once('./classes/eDokumentyApi/EDokApi.inc');
$api = new \EDokApi();
try {
    $data = [
        "msgtxt" => "Treść powiadomienia",
        "usr_id" => [2, 3],
        "metaData" => [
            "nscls_" => "DOCUMENT",
            "nskey_" => 2,
            "ntcls_" => "PROCESS",
            "ntkey_" => 2,
            "nttxt_" => "Tytuł powiadomienia"
        ]
    ];   

    $success = $api->notifyUser($data);
 } catch(\Exception $e) {
     throw new \Exception($e->getMessage());
 }

Obiekt Notifier::class

Użycie klasy Notifier daje nam nieco większą kontrolę nad wysyłanym komunikatem. Pozwala m.in. na wysyłanie wiadomości na czacie, czy ustawienie dla powiadomień typu email tematu wiadomości, templatki oraz kontekstu beana do dynamicznego uzupełnienia treści wiadomości.

Przykład użycia

require_once('./modules/Evidence/beans/FKElementBean.inc');
$bean = new \FKElementBean(1);
$template = '../../Pipeline/p_dostarczono.tpl';
$metaData = [
            "nscls_" => "FEATURE",
            "nskey_" => 2,
            "nstxt_" => "cokolwiek",
            "ntcls_" => "TYPE_OF_DOCUMENT",
            "ntkey_" => 2,
            "nttxt_" => "Tytuł powiadomienia"
        ];

$notifier = new \Notifier();
$notifier->sendToLoggedUser(TRUE);
$notifier->setSenderType(\Notifier::LOGGED_USER_SENDER);
$notifier->setMetaData($metaData);
$notifier->setTemplate($template);
$notifier->setContextBean($bean);
$notifier->setReceivers(4);
$notifier->setNotifiersType(['Communicator', 'Mail', 'Document', 'Jabber']);
$notifier->setTopic("to jest topic");
$notifier->setMessage(" tresc wiadomości");
$notifier->send();

Opis wykorzystanych metod i ich parametrów

metodaparametryopis
sendToLoggedUserbooleanCzy wysłać również do zalogowanego użytkownika, jeśli jest na liście odbiorców
setSenderTypestringOkreśla kto jest nadawcą; możliwe wartości:
  • Notifier::SYSTEM_SENDER - dla powiadomień systemowych
  • Notifier::LOGGED_USER_SENDER - istotne zwłaszcza dla powiadomień komunikatora (typ Jabber)
  • Notifier::EMAIL_SENDER
setMetaDataarrayTablica metadanych określających parametry dla powiadomienia w strumieniu powiadomień takie jak tytuł, treść, przyciski.
setTemplatestringŚcieżka do pliku *.tpl z szablonem wiadomości; domyślnie system ich szuka w ścieżce public_html/apps/edokumenty/var/tpl/. Jeśli chcemy użyć pliku z innego miejsca należy podać ścieżkę względną z folderu tpl do właściwego umiejscowienia pliku. Template ustawiamy w przypadku widomości email
setContextBeanobjectPrzesyłamy beana, z którego template wiadomości będzie mógł dynamicznie pobrać dane
setReceiversint, int[]ID użytkownika / użytkowników (users.usr_id)
setNotifiersTypestring, string[]Wybór kanału komunikacji. Wybrane opcje można przesłać jako string (zarówno pojedynczą wartość, jak kilka wybranych opcji, oddzielonych od siebie przecinkiem) lub jako tablicę stringów.
  • Communicator - wysyła powiadomienie w strumieniu powiadomień
  • Mail - wysyła email z wiadomością
  • Document - tworzy notatke służbową dla użytkownika
  • Jabber - wysyła wiadomość na czacie
setTopicstringTemat wiadomości w przypadku powiadomienia email.
setMessagestringTreść wiadomości dla powiadmień email bez własnej templatki, dla dokumentu oraz wiadomości na czacie
sendnoneTa metoda nie przyjmuje parametrów; służy do wysłania powiadomienia.