{"id":19404516,"url":"https://github.com/seven-io/craft","last_synced_at":"2025-10-29T09:01:56.501Z","repository":{"id":57054080,"uuid":"358693670","full_name":"seven-io/craft","owner":"seven-io","description":"Official CraftCMS/CraftCommerce Plugin for seven.io","archived":false,"fork":false,"pushed_at":"2025-10-02T12:36:11.000Z","size":332,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-10T11:38:59.855Z","etag":null,"topics":["craft-commerce","craft-plugin","craft3","craftcms","sms"],"latest_commit_sha":null,"homepage":"https://plugins.craftcms.com/sms77","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seven-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-04-16T18:59:00.000Z","updated_at":"2025-10-02T12:36:14.000Z","dependencies_parsed_at":"2023-11-21T11:48:27.873Z","dependency_job_id":"7437ec11-a2a6-4ae0-9dd7-5f05ba7b6a31","html_url":"https://github.com/seven-io/craft","commit_stats":{"total_commits":7,"total_committers":2,"mean_commits":3.5,"dds":0.4285714285714286,"last_synced_commit":"e64cfb0c8a1e21c7699fd06cf9a77e8ceee9cf5f"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/seven-io/craft","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seven-io%2Fcraft","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seven-io%2Fcraft/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seven-io%2Fcraft/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seven-io%2Fcraft/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seven-io","download_url":"https://codeload.github.com/seven-io/craft/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seven-io%2Fcraft/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281592587,"owners_count":26527518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-29T02:00:06.901Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["craft-commerce","craft-plugin","craft3","craftcms","sms"],"created_at":"2024-11-10T11:35:19.127Z","updated_at":"2025-10-29T09:01:56.496Z","avatar_url":"https://github.com/seven-io.png","language":"PHP","readme":"\u003cimg src=\"https://www.seven.io/wp-content/uploads/Logo.svg\" width=\"250\" /\u003e\n\n# Official Craft [CMS](https://craftcms.com) + [Commerce](https://craftcms.com/commerce) Plugin\n\nSend SMS and voice (text-to-speech) messages directly from your Craft CMS control panel or programmatically via service APIs.\n\n## Features\n\n- **SMS Messaging**\n  - Send individual SMS via control panel\n  - Programmatic SMS API with fluent interface\n  - Bulk SMS to Craft Commerce customers\n  - Advanced options: delay, flash SMS, performance tracking, custom labels\n\n- **Voice Messaging**\n  - Send individual voice calls via control panel\n  - Programmatic voice API with fluent interface\n  - Bulk voice calls to Craft Commerce customers\n  - Text-to-speech with XML support\n\n- **Craft Commerce Integration** (optional)\n  - Bulk messaging to all customers\n  - Country-based filtering\n  - Automatic phone number extraction from customer addresses\n\n## Prerequisites\n\n- [Craft CMS](https://craftcms.com) 3.1.5 or later\n- An API key from [seven.io](https://www.seven.io)\n- (Optional) [Craft Commerce](https://craftcms.com/commerce) 2.x for bulk messaging features\n\n## Installation\n\nInstall via [Composer](https://getcomposer.org):\n\n```bash\n# Navigate to your Craft project root\ncd /path/to/your/craft-project\n\n# Install the plugin\ncomposer require seven.io/craft\n\n# Install via Craft CLI\n./craft install/plugin seven\n```\n\nAlternatively, install from the Craft Plugin Store.\n\n## Configuration\n\n1. Navigate to **Settings → seven** in your Craft control panel\n2. Enter your seven.io API key (required)\n3. Optionally set a default sender ID/from number (max 16 characters)\n\n## Usage\n\n### Control Panel\n\nAccess the plugin via the main navigation:\n- **seven SMS** - Send individual or bulk SMS messages\n- **seven Voice** - Send individual or bulk voice calls\n\nFor bulk messaging with Craft Commerce, leave the recipient field empty and optionally filter by country.\n\n### Programmatic Usage\n\n#### Send SMS\n\n```php\nuse Seven\\Craft\\Plugin;\n\n$instance = Plugin::getInstance();\n$sms = $instance-\u003egetSms();\n\n$sms-\u003eparams\n    -\u003esetTo('+4901234567890')           // Required: recipient(s), comma-separated\n    -\u003esetText('Your message here')      // Required: message text\n    -\u003esetFrom('YourCompany')            // Optional: sender ID (max 16 chars)\n    -\u003esetDelay('2024-12-31 23:59')     // Optional: scheduled delivery\n    -\u003esetFlash(true)                    // Optional: flash SMS\n    -\u003esetLabel('campaign-2024')         // Optional: custom label\n    -\u003esetPerformanceTracking(true);     // Optional: enable tracking\n\n$success = $sms-\u003esend(); // Returns true on success, false on failure\n```\n\n#### Send Voice Call\n\n```php\nuse Seven\\Craft\\Plugin;\n\n$instance = Plugin::getInstance();\n$voice = $instance-\u003egetVoice();\n\n$voice-\u003eparams\n    -\u003esetTo('+4901234567890')           // Required: recipient(s), comma-separated\n    -\u003esetText('Your message here')      // Required: message text (TTS)\n    -\u003esetFrom('YourCompany')            // Optional: caller ID\n    -\u003esetXml(false)                     // Optional: XML mode\n    -\u003esetJson(true);                    // Optional: JSON response\n\n$success = $voice-\u003esend(); // Returns true on success, false on failure\n```\n\n#### Available Parameters\n\n**SMS Parameters** (via `SmsParams`):\n- `setTo(string)` - Recipient phone number(s), comma-separated\n- `setText(string)` - Message text\n- `setFrom(string)` - Sender ID (alphanumeric, max 16 chars)\n- `setDelay(string)` - Scheduled delivery timestamp\n- `setFlash(bool)` - Send as flash SMS\n- `setForeignId(string)` - Custom foreign ID\n- `setJson(bool)` - JSON response format\n- `setLabel(string)` - Custom label for tracking\n- `setPerformanceTracking(bool)` - Enable performance tracking\n\n**Voice Parameters** (via `VoiceParams`):\n- `setTo(string)` - Recipient phone number(s), comma-separated\n- `setText(string)` - Text-to-speech message\n- `setFrom(string)` - Caller ID\n- `setXml(bool)` - XML mode\n- `setJson(bool)` - JSON response format\n\n### Error Handling\n\nThe `send()` method returns a boolean:\n- `true` - Message sent successfully (API response code 100)\n- `false` - Sending failed (logged via Craft's error handler)\n\nCheck Craft logs for detailed error messages.\n\n## Craft Commerce Bulk Messaging\n\nWhen Craft Commerce is installed, you can send messages to all customers:\n\n1. Navigate to **seven SMS** or **seven Voice**\n2. Leave the recipient field empty\n3. Optionally select countries to filter recipients\n4. Enter your message and send\n\nThe plugin automatically extracts phone numbers from customer billing/shipping addresses.\n\n## API Response Codes\n\n- `100` - Success\n- Other codes indicate errors (see [seven.io API documentation](https://www.seven.io/en/docs/gateway/http-api/) for details)\n\n## Support\n\nNeed help? Contact us:\n- Email: [support@seven.io](mailto:support@seven.io)\n- Website: [seven.io/en/company/contact](https://www.seven.io/en/company/contact/)\n- Issues: [GitHub Issues](https://github.com/seven-io/craft/issues)\n\n## License\n\n[![MIT](https://img.shields.io/badge/License-MIT-teal.svg)](LICENSE.md)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseven-io%2Fcraft","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseven-io%2Fcraft","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseven-io%2Fcraft/lists"}