Member Junction
    Preparing search index...

    Module @memberjunction/entity-communications-client - v5.49.0

    @memberjunction/entity-communications-client

    Client-side (Angular / browser) implementation of the MemberJunction Entity Communications Engine. This package sends entity communication requests to the server via GraphQL, enabling bulk messaging to records retrieved from entity views.

    graph TD
        subgraph client["@memberjunction/entity-comm-client"]
            ECC["EntityCommunicationsEngineClient"]
        end
    
        subgraph base["@memberjunction/entity-communications-base"]
            ECB["EntityCommunicationsEngineBase"]
            PARAMS["EntityCommunicationParams"]
            RESULT["EntityCommunicationResult"]
        end
    
        subgraph graphql["@memberjunction/graphql-dataprovider"]
            GQL["GraphQLDataProvider"]
        end
    
        subgraph api["MJAPI Server"]
            RESOLVER["GraphQL Resolver"]
            SERVER["EntityCommunicationsEngine\n(Server)"]
        end
    
        ECB --> ECC
        ECC -->|mutation| GQL
        GQL -->|HTTP| RESOLVER
        RESOLVER --> SERVER
    
        style client fill:#b8762f,stroke:#8a5722,color:#fff
        style base fill:#2d6a9f,stroke:#1a4971,color:#fff
        style graphql fill:#7c5295,stroke:#563a6b,color:#fff
        style api fill:#2d8659,stroke:#1a5c3a,color:#fff
    
    npm install @memberjunction/entity-communications-client
    
    import { EntityCommunicationsEngineClient } from '@memberjunction/entity-communications-client';
    import { EntityCommunicationParams } from '@memberjunction/entity-communications-base';

    const client = new EntityCommunicationsEngineClient();
    await client.Config();

    const params: EntityCommunicationParams = {
    EntityID: '123',
    RunViewParams: {
    ViewID: '456',
    ExtraFilter: 'IsActive = 1',
    MaxRows: 100
    },
    ProviderName: 'SendGrid',
    ProviderMessageTypeName: 'Email',
    Message: {
    From: 'noreply@example.com',
    To: '{{Email}}',
    Subject: 'Important Update',
    Body: 'Hello {{FirstName}}, we have an update for you.',
    ContextData: {
    CompanyName: 'Acme Corp'
    }
    },
    PreviewOnly: false,
    IncludeProcessedMessages: true
    };

    const result = await client.RunEntityCommunication(params);

    if (result.Success) {
    console.log(`Sent ${result.Results.length} messages`);
    } else {
    console.error(`Failed: ${result.ErrorMessage}`);
    }

    Test communications without actually sending messages:

    const params: EntityCommunicationParams = {
    // ...same parameters...
    PreviewOnly: true,
    IncludeProcessedMessages: true
    };

    const result = await client.RunEntityCommunication(params);
    result.Results.forEach(item => {
    console.log('Would send to:', item.RecipientData);
    console.log('Subject:', item.Message.ProcessedSubject);
    console.log('Body:', item.Message.ProcessedBody);
    });
    const params: EntityCommunicationParams = {
    EntityID: '123',
    RunViewParams: { ViewID: '456' },
    ProviderName: 'SendGrid',
    ProviderMessageTypeName: 'Email',
    Message: {
    From: 'welcome@example.com',
    To: '{{Email}}',
    SubjectTemplate: subjectTemplate,
    BodyTemplate: bodyTemplate,
    HTMLBodyTemplate: htmlTemplate,
    ContextData: { Year: new Date().getFullYear() }
    }
    };

    The client serializes EntityCommunicationParams and sends them to the MJAPI server via a GraphQL mutation. The server-side EntityCommunicationsEngine handles the actual view execution, template rendering, and message delivery through communication providers.

    sequenceDiagram
        participant UI as Angular UI
        participant Client as EntityCommClient
        participant GQL as GraphQL Provider
        participant API as MJAPI
        participant Server as EntityCommEngine
    
        UI->>Client: RunEntityCommunication(params)
        Client->>Client: Serialize params
        Client->>GQL: GraphQL mutation
        GQL->>API: HTTP POST
        API->>Server: RunEntityCommunication(params)
        Server->>Server: Execute view, render templates, send
        Server-->>API: EntityCommunicationResult
        API-->>GQL: Response
        GQL-->>Client: Deserialized result
        Client-->>UI: EntityCommunicationResult
    
    Method Description
    Config(forceRefresh?, contextUser?, provider?) Load metadata (required before first use)
    RunEntityCommunication(params) Execute entity communication via GraphQL
    const result = await client.RunEntityCommunication(params);

    if (!result.Success) {
    console.error('Communication failed:', result.ErrorMessage);

    // Check individual message failures
    result.Results?.forEach(item => {
    if (!item.Message.Success) {
    console.error(`Failed for ${item.RecipientData.Email}:`, item.Message.Error);
    }
    });
    }
    Package Purpose
    @memberjunction/entity-communications-base Shared types and base engine
    @memberjunction/graphql-dataprovider GraphQL client for API communication
    @memberjunction/core Core framework utilities
    @memberjunction/core-entities Entity type definitions
    @memberjunction/global Class registration
    npm run build    # Compile TypeScript
    npm start # Watch mode

    Classes

    EntityCommunicationsEngineClient