Releases: DevWizardHQ/laravel-textify
v1.4.0
What's Changed
- fix: update ReveSMS provider URIs to use HTTP instead of HTTPS by @iqbalhasandev in #8
Full Changelog: v1.3.1...v1.4.0
v1.3.1
What's Changed
- build(deps): Bump stefanzweifel/git-auto-commit-action from 6 to 7 by @dependabot[bot] in #7
Full Changelog: v1.3.0...v1.3.1
v1.3.0
What's Added
- Message Validation System: Comprehensive message validation with configurable rules
- Laravel-style validation configuration (
required,min,max) - Support for nullable messages via
TEXTIFY_MESSAGE_REQUIRED=false - Configurable minimum and maximum message length
- Proper validation error messages
- Laravel-style validation configuration (
What's Enhanced
- Error Handling: Improved error mapping and messages for all Bangladeshi SMS providers
- ReveSmsProvider: Enhanced error code mapping including error 114 handling
- AlphaSmsProvider: Better error message descriptions
- EsmsProvider: Improved error handling and status mapping
- DhorolaSmsProvider: Enhanced error code explanations
- MimSmsProvider: Better API response parsing
- BulkSmsBdProvider: Comprehensive error code mapping
What's Fixed
- ReveSMS Error 114: "Content not provided" error now prevented by pre-send validation
- Empty Message Handling: Consistent behavior across all providers
- Whitespace Messages: Properly validates and rejects whitespace-only messages
What's Technical
- Added
validateMessageContent()method to BaseProvider - Enhanced BaseProvider with proper phone number validation methods
- Comprehensive test suite with 6 test cases
- PHPStan validation passed
- Backward compatible configuration
Full Changelog: v1.2.0...v1.3.0
v1.2.0
What's Changed
🚀 New Features
- feat: add connect_timeout configuration option
- Added
connect_timeoutoption to all SMS provider configurations - Updated
BaseProviderto useconnect_timeoutin HTTP client config - Added comprehensive test coverage for
connect_timeoutfunctionality - Updated provider configuration documentation
- Default
connect_timeoutis 10 seconds, configurable per provider
- Added
⚡ Enhanced Provider Configuration
- Timeout Configuration: Providers now support two distinct timeout settings:
timeout: Maximum time (in seconds) to wait for a response from the API (default: 30s)connect_timeout: Maximum time (in seconds) to wait for connection establishment (default: 10s)
📋 Updated Providers
All SMS providers now support the new connect_timeout configuration:
- Dhorola SMS:
DHOROLA_CONNECT_TIMEOUT(default: 10s) - BulkSMSBD:
BULKSMSBD_CONNECT_TIMEOUT(default: 10s) - MimSMS:
MIMSMS_CONNECT_TIMEOUT(default: 10s) - eSMS:
ESMS_CONNECT_TIMEOUT(default: 10s) - REVE SMS:
REVESMS_CONNECT_TIMEOUT(default: 10s) - Alpha SMS:
ALPHASMS_CONNECT_TIMEOUT(default: 10s) - Nexmo:
NEXMO_CONNECT_TIMEOUT(default: 10s)
🧪 Testing
- Added
ConnectTimeoutTestwith comprehensive test coverage - Tests verify proper default values and configuration handling
- All existing tests continue to pass
Breaking Changes
None. This is a backward-compatible feature addition.
Migration Guide
To use the new connect_timeout feature, add the appropriate environment variable to your .env file:
# Example for Dhorola SMS provider
DHOROLA_CONNECT_TIMEOUT=15
# Or for any other provider
BULKSMSBD_CONNECT_TIMEOUT=8
MIMSMS_CONNECT_TIMEOUT=12Full Changelog: v1.1.2...v1.2.0
v1.1.2
What's Changed
- build(deps): Bump actions/checkout from 4 to 5 by @dependabot[bot] in #2
- fix: set SSL verification to false by default to prevent connection timeouts (#3) by @iqbalhasandev in #4
New Contributors
- @iqbalhasandev made their first contribution in #4
Full Changelog: v1.1.1...v1.1.2
v1.1.1
What we change:
- Refactor TextifyMessage class to use 'self' instead of 'static' for return types and update phpstan baseline configuration
Full Changelog: v1.1.0...v1.1.1
v1.1.0
feat: add Laravel notification channel with comprehensive SMS integration
🔔 MAJOR FEATURE: Laravel Notifications Integration
This commit introduces complete Laravel notification system integration, allowing developers to send SMS notifications using the 'textify' channel alongside mail, database, and other Laravel notification channels.
New Features Added:
1. TextifyChannel (src/Channels/TextifyChannel.php)
- Full Laravel notification channel implementation
- Smart phone number resolution with 3-tier priority system:
- routeNotificationForTextify() method (notification context aware)
- getTextifyPhoneNumber() method (custom business logic)
- Automatic attribute detection (phone_number, phone, mobile, phn, cell, mobile_number)
- Support for multiple message formats (TextifyMessage object, string, array)
- Provider/driver selection per notification
- Custom sender ID support
- Comprehensive error handling and validation
2. TextifyMessage DTO (src/Notifications/TextifyMessage.php)
- Immutable data structure for SMS notifications
- Fluent API for easy message construction
- Support for message, sender ID, driver/provider, and metadata
- Factory method pattern with TextifyMessage::create()
- Seamless integration with notification channel
3. Service Provider Integration (src/TextifyServiceProvider.php)
- Automatic notification channel registration
- Integration with Laravel's ChannelManager
- No additional configuration required - works out of the box
4. Comprehensive Test Suite (tests/NotificationChannelTest.php)
- 9 test cases covering all notification scenarios
- Phone number resolution priority testing
- Multiple message format validation
- Error handling verification
- Direct channel usage testing
- Edge case coverage
5. Usage Examples (examples/NotificationExamples.php)
- 5 real-world notification examples
- Order notifications, OTP, marketing, emergency alerts
- User model integration examples
- Advanced notification patterns
- Best practices and conventions
6. Enhanced Documentation (README.md)
- Complete Laravel Notifications section with table of contents
- Step-by-step setup guide
- Phone number resolution methods documentation
- Message format examples
- Event integration patterns
- Advanced usage scenarios
- Configuration examples
Full Changelog: v1.0.1...v1.1.0
V1.0.1
🐛 Bug Fixes
- Fixed Critical Queue Bug: Fixed
queue()method incorrectly handling multiple contacts by only processing the first contact ([0]) - Improved Queue Functionality: Now properly handles arrays of contacts, creating separate jobs for each recipient
- Fixed CI Compatibility: Removed
describe()blocks from tests for better CI environment compatibility
✨ New Features
- Added TextifyJobFailed Event: New event dispatched when queued SMS jobs fail, providing better error tracking
- Enhanced Queue Error Handling: Improved error logging and event dispatching for failed queue jobs
🔧 Configuration Cleanup
- Removed Unused Config: Cleaned up configuration file by removing unused sections (
queue,validation,rate_limiting) - Updated Activity Tracking Default: Changed
TEXTIFY_ACTIVITY_TRACKING_ENABLEDdefault tofalsefor opt-in behavior - Streamlined Config: Configuration now only includes implemented features for better clarity
📚 Documentation Updates
- Updated README: Fixed activity tracking default value documentation
- Enhanced Event Documentation: Added documentation for new
TextifyJobFailedevent
Full Changelog: v1.0.0...v1.0.1
v1.0.0
Initial Release 🎉
First stable release of Laravel Textify - Enterprise SMS Package for Laravel
✨ Key Features:
• 8+ SMS Providers Support with unified API
• Automatic Fallback System for maximum reliability
• Queue Integration for background processing
• Comprehensive Activity Tracking & Logging
• Event-Driven Architecture with lifecycle events
• Fluent API Interface for developer experience
• Phone Number Validation & Formatting
• Laravel 10+ & PHP 8.3+ Support
📱 Supported Providers:
🇧🇩 Bangladeshi: DhorolaSMS, BulkSMSBD, MimSMS, eSMS, REVE SMS, Alpha SMS
🌍 International: Twilio, Nexmo/Vonage (with optional SDK)
🛠️ Development: Log & Array providers for testing
🏗️ Enterprise Architecture:
• Interface-driven design with comprehensive contracts
• BaseProvider abstraction for easy extension
• Factory patterns for component creation
• Laravel service provider with auto-discovery
• Comprehensive test coverage (39 tests, 211 assertions)
📚 Production Ready:
• Complete documentation with examples
• Configuration guides for all providers
• Enterprise-grade error handling
• Optimized for performance and scalability
Perfect for businesses needing reliable SMS functionality with multiple provider support."
Full Changelog: https://github.com/DevWizardHQ/laravel-textify/commits/v1.0.0