အကြောင်းအရာသို့ ကရန်

အဖွဲ့အစည်းများ

သင့် ChatHub အကောင့်အတွင်း အဖွဲ့အစည်းများကို စီမံခန့်ခွဲပါ။ အဖွဲ့အစည်းများသည် အော်ပရေတာများနှင့် ချက်တင်လုပ်ဆောင်မှုများအတွက် ကွန်တိန်နာများအဖြစ် ဆောင်ရွက်သည်။

ခြုံငုံသုံးသပ်ချက်

ChatHub ရှိ အဖွဲ့အစည်းများ-

  • ဌာန၊ အဖွဲ့ သို့မဟုတ် လုပ်ဆောင်ချက်အလိုက် အော်ပရေတာများကို အုပ်စုဖွဲ့ပါ။
  • မတူညီသော လုပ်ငန်းယူနစ်များအကြား ချတ်လုပ်ခြင်းများကို သီးခြားခွဲထုတ်ပါ။
  • အဖွဲ့အစည်းအဆင့်တွင်ခွင့်ပြုချက်များကိုစီမံပါ။
  • အဖွဲ့အစည်းအလိုက် တိုင်းတာမှုများကို ခြေရာခံပါ။

အဖွဲ့အစည်းများစာရင်း

သင့်ကုမ္ပဏီ တိုကင်ဖြင့် အသုံးပြုနိုင်သော အဖွဲ့အစည်းအားလုံးကို ပြန်လည်ရယူပါ။

အဆုံးမှတ်

GET /api/company/organization

တောင်းဆိုခြင်း။

curl -X GET https://chatapi.smsbat.com/api/company/organization \
  -H "Authorization: Bearer {company-token}" \
  -H "Accept: text/plain"

ခေါင်းစီးများ

ခေါင်းစီး တန်ဖိုး လိုအပ်သည် ဖော်ပြချက်
ခွင့်ပြုချက် ဆောင်သူ ဟုတ်တယ် ကုမ္ပဏီ တိုကင်
လက်ခံ စာသား/လွင်ပြင် ဟုတ်တယ် တုံ့ပြန်မှုပုံစံ

တုံ့ပြန်မှု

[
  {
    "id": 6,
    "name": "Customer Support"
  },
  {
    "id": 24,
    "name": "Sales Team"
  },
  {
    "id": 42,
    "name": "Technical Support"
  }
]

တုံ့ပြန်မှုနယ်ပယ်များ

လယ် ရိုက် ဖော်ပြချက်
id ကိန်းပြည့် ထူးခြားသောအဖွဲ့အစည်းအမှတ်အသား
အမည် string အဖွဲ့အစည်းအမည်

အဖွဲ့အစည်းဖွဲ့စည်းပုံ

အဖွဲ့အစည်းတစ်ခုစီတွင်-

  • အော်ပရေတာများ- အဖွဲ့အစည်းအတွက် သတ်မှတ်ထားသော ချတ်အေးဂျင့်များ
  • Chat Sessions- အသက်ဝင်ပြီး သမိုင်းဝင် စကားဝိုင်းများ
  • ဝစ်ဂျက်များ- ဤအဖွဲ့အစည်းအတွက် ထည့်သွင်းထားသော ချတ်ဝစ်ဂျက်များ
  • ဆက်တင်များ- အဖွဲ့အစည်းအလိုက် ဖွဲ့စည်းမှုပုံစံ

Cases ကိုအသုံးပြုပါ။

ဌာနပေါင်းစုံ ကုမ္ပဏီ

Company: ACME Corp
├── Organization: Sales (id: 10)
│   ├── Operator: John (Sales Rep)
│   └── Operator: Sarah (Sales Manager)
├── Organization: Support (id: 20)
│   ├── Operator: Mike (Support Agent)
│   └── Operator: Lisa (Support Lead)
└── Organization: Technical (id: 30)
    └── Operator: Alex (Tech Expert)

Multi-Brand လုပ်ငန်း

Company: Retail Group
├── Organization: Brand A (id: 101)
│   └── Widget: branda.com
├── Organization: Brand B (id: 102)
│   └── Widget: brandb.com
└── Organization: Brand C (id: 103)
    └── Widget: brandc.com

အကောင်အထည်ဖော်မှု ဥပမာများ

Python

import requests

def get_organizations(company_token):
    """Get list of all organizations"""
    response = requests.get(
        'https://chatapi.smsbat.com/api/company/organization',
        headers={
            'Authorization': f'Bearer {company_token}',
            'Accept': 'text/plain'
        }
    )
    response.raise_for_status()
    return response.json()

def find_organization_by_name(company_token, name):
    """Find organization by name"""
    organizations = get_organizations(company_token)

    for org in organizations:
        if org['name'].lower() == name.lower():
            return org

    return None

def get_organization_by_id(company_token, org_id):
    """Get specific organization by ID"""
    organizations = get_organizations(company_token)

    for org in organizations:
        if org['id'] == org_id:
            return org

    return None

# Usage
token = "your-company-token"

# Get all organizations
orgs = get_organizations(token)
print(f"Found {len(orgs)} organizations")

# Find specific organization
support_org = find_organization_by_name(token, "Support")
if support_org:
    print(f"Support organization ID: {support_org['id']}")

# Get by ID
org = get_organization_by_id(token, 24)
print(f"Organization: {org['name']}")

JavaScript (Node.js)

const axios = require('axios');

class OrganizationManager {
  constructor(companyToken) {
    this.companyToken = companyToken;
    this.baseUrl = 'https://chatapi.smsbat.com';
  }

  async getOrganizations() {
    const response = await axios.get(
      `${this.baseUrl}/api/company/organization`,
      {
        headers: {
          'Authorization': `Bearer ${this.companyToken}`,
          'Accept': 'text/plain'
        }
      }
    );

    return response.data;
  }

  async findByName(name) {
    const organizations = await this.getOrganizations();

    return organizations.find(org =>
      org.name.toLowerCase() === name.toLowerCase()
    );
  }

  async findById(id) {
    const organizations = await this.getOrganizations();
    return organizations.find(org => org.id === id);
  }

  async listByIds(ids) {
    const organizations = await this.getOrganizations();
    return organizations.filter(org => ids.includes(org.id));
  }
}

// Usage
const manager = new OrganizationManager('your-company-token');

async function manageOrganizations() {
  // Get all organizations
  const orgs = await manager.getOrganizations();
  console.log(`Found ${orgs.length} organizations`);

  // Find by name
  const support = await manager.findByName('Support');
  console.log('Support org:', support);

  // Find by ID
  const org = await manager.findById(24);
  console.log('Organization:', org);

  // Get multiple organizations
  const selectedOrgs = await manager.listByIds([10, 20, 30]);
  console.log('Selected organizations:', selectedOrgs);
}

manageOrganizations();

PHP

<?php

class OrganizationManager {
    private $companyToken;
    private $baseUrl = 'https://chatapi.smsbat.com';

    public function __construct($companyToken) {
        $this->companyToken = $companyToken;
    }

    public function getOrganizations() {
        $ch = curl_init($this->baseUrl . '/api/company/organization');

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'Authorization: Bearer ' . $this->companyToken,
            'Accept: text/plain'
        ]);

        $response = curl_exec($ch);
        curl_close($ch);

        return json_decode($response, true);
    }

    public function findByName($name) {
        $organizations = $this->getOrganizations();

        foreach ($organizations as $org) {
            if (strcasecmp($org['name'], $name) === 0) {
                return $org;
            }
        }

        return null;
    }

    public function findById($id) {
        $organizations = $this->getOrganizations();

        foreach ($organizations as $org) {
            if ($org['id'] === $id) {
                return $org;
            }
        }

        return null;
    }
}

// Usage
$manager = new OrganizationManager('your-company-token');

// Get all organizations
$orgs = $manager->getOrganizations();
echo "Found " . count($orgs) . " organizations\n";

// Find by name
$support = $manager->findByName('Support');
if ($support) {
    echo "Support organization ID: " . $support['id'] . "\n";
}

// Find by ID
$org = $manager->findById(24);
if ($org) {
    echo "Organization: " . $org['name'] . "\n";
}

အဖွဲ့အစည်းများနှင့် လက်တွဲလုပ်ဆောင်ခြင်း။

အဖွဲ့ အစည်းအားလုံးကို စာရင်းပြုစုပါ။

const organizations = await getOrganizations(companyToken);

organizations.forEach(org => {
  console.log(`${org.id}: ${org.name}`);
});

အထွက်-

6: Customer Support
24: Sales Team
42: Technical Support

အဖွဲ့အစည်းများကို စစ်ထုတ်ခြင်း။

// Get organizations matching criteria
const supportOrgs = organizations.filter(org =>
  org.name.toLowerCase().includes('support')
);

// Get organizations by IDs
const specificOrgs = organizations.filter(org =>
  [10, 20, 30].includes(org.id)
);

မြေပုံအစည်း

// Create ID to name mapping
const orgMap = organizations.reduce((map, org) => {
  map[org.id] = org.name;
  return map;
}, {});

console.log(orgMap[24]); // "Sales Team"

ပေါင်းစည်းမှုပုံစံများ

အဖွဲ့အစည်းရွေးချယ်မှု UI

async function renderOrganizationSelect(companyToken) {
  const organizations = await getOrganizations(companyToken);

  const select = document.createElement('select');
  select.id = 'organization-select';

  organizations.forEach(org => {
    const option = document.createElement('option');
    option.value = org.id;
    option.textContent = org.name;
    select.appendChild(option);
  });

  return select;
}

အဖွဲ့အစည်းအလိုက် Chats လမ်းကြောင်း

async function routeChatToOrganization(chatRequest) {
  const organizations = await getOrganizations(companyToken);

  // Route based on business logic
  let targetOrg;

  if (chatRequest.department === 'sales') {
    targetOrg = organizations.find(org =>
      org.name.toLowerCase().includes('sales')
    );
  } else if (chatRequest.department === 'support') {
    targetOrg = organizations.find(org =>
      org.name.toLowerCase().includes('support')
    );
  }

  return targetOrg?.id;
}

အဖွဲ့အစည်း မက်ထရစ်များ

class OrganizationMetrics {
  async getMetrics(companyToken, orgId) {
    // Get operators for organization
    const operators = await getOperators(companyToken, orgId);

    // Get chat statistics (example)
    return {
      organizationId: orgId,
      operatorCount: operators.length,
      activeOperators: operators.filter(op => op.isActive).length,
      // Add more metrics as needed
    };
  }

  async getAllMetrics(companyToken) {
    const organizations = await getOrganizations(companyToken);

    const metrics = await Promise.all(
      organizations.map(org =>
        this.getMetrics(companyToken, org.id)
      )
    );

    return metrics;
  }
}

အကောင်းဆုံးအလေ့အကျင့်များ

သိမ်းဆည်းခြင်း။

API ခေါ်ဆိုမှုများကို လျှော့ချရန် Cache အဖွဲ့အစည်းစာရင်း-

class CachedOrganizationManager {
  constructor(companyToken, cacheTTL = 300000) { // 5 minutes
    this.companyToken = companyToken;
    this.cacheTTL = cacheTTL;
    this.cache = null;
    this.cacheTime = 0;
  }

  async getOrganizations(forceRefresh = false) {
    const now = Date.now();

    if (!forceRefresh &&
        this.cache &&
        now - this.cacheTime < this.cacheTTL) {
      return this.cache;
    }

    this.cache = await fetchOrganizations(this.companyToken);
    this.cacheTime = now;

    return this.cache;
  }

  clearCache() {
    this.cache = null;
    this.cacheTime = 0;
  }
}

မှားယွင်းကိုင်တွယ်ခြင်း။

async function getOrganizationsWithRetry(companyToken, retries = 3) {
  for (let i = 0; i < retries; i++) {
    try {
      return await getOrganizations(companyToken);
    } catch (error) {
      if (error.response?.status === 401) {
        throw new Error('Invalid or expired company token');
      }

      if (i === retries - 1) throw error;

      // Wait before retry
      await new Promise(resolve =>
        setTimeout(resolve, Math.pow(2, i) * 1000)
      );
    }
  }
}

အတည်ပြုခြင်း။

function validateOrganizationId(organizations, orgId) {
  const org = organizations.find(o => o.id === orgId);

  if (!org) {
    throw new Error(`Organization ${orgId} not found`);
  }

  return org;
}

// Usage
const organizations = await getOrganizations(companyToken);
const org = validateOrganizationId(organizations, requestedOrgId);

ပြဿနာဖြေရှင်းခြင်း။

ဗလာအဖွဲ့စာရင်း

  • ကုမ္ပဏီ တိုကင်သည် တရားဝင်ကြောင်း အတည်ပြုပါ။
  • Check token တွင် အဖွဲ့အစည်းဝင်ရောက်ခွင့်ရှိသည်။
  • အကောင့်ထဲတွင် အဖွဲ့အစည်းများ ရှိနေကြောင်း သေချာပါစေ။

အဖွဲ့အစည်း မတွေ့ပါ။

  • အဖွဲ့အစည်း ID မှန်ကန်ကြောင်း အတည်ပြုပါ။
  • စစ်ဆေးသောအဖွဲ့အစည်းကို ဖျက်မထားပါ။
  • အဖွဲ့အစည်းစာရင်းကို ပြန်လည်စတင်ပါ။

401 ခွင့်ပြုချက်မရှိပါ။

  • ကုမ္ပဏီ တိုကင်သည် တရားဝင်ပြီး သက်တမ်းမကုန်ကြောင်း စစ်ဆေးပါ။
  • လိုအပ်ပါက ကုမ္ပဏီ တိုကင်အသစ်ကို တောင်းဆိုပါ။
  • တိုကင်ပုံစံမှန်ကန်ကြောင်း စစ်ဆေးပါ။

နောက်အဆင့်များ

  • Authentication - ကုမ္ပဏီ တိုကင်ရယူပါ။
  • အော်ပရေတာ - အဖွဲ့အစည်းများတွင် အော်ပရေတာများကို စီမံခန့်ခွဲပါ။
  • Widget Integration - အဖွဲ့အစည်းများအတွက် ချတ်ကို ပေါင်းစည်းပါ