Skip to content

TakNone/phptgcalls

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

PHP Extension Powered By Rust Telegram Calls

TgCalls PHP Extension

⚑ A blazing-fast PHP extension powered by Rust for Telegram voice/video calls ⚑

Stars Forks License Last Commit PHP 8.4+ Rust 1.96.0+


🎯 What is PhpTgCalls ?

PhpTgCalls is a native PHP extension built with Rust that brings Telegram voice & video calling capabilities directly into PHP. It wraps the powerful NTgCalls C++ library, providing a clean, object-oriented PHP API

It integrates seamlessly with LiveProto β€” the async, pure-PHP MTProto Telegram client β€” enabling you to join group calls, stream audio/video, and handle Telegram VoIP entirely from PHP


✨ Features

Category Feature
πŸŽ™οΈ Core Join group calls ( voice & video )
πŸŽ₯ Media Stream audio/video with H.264, VP8, VP9, AV1, Opus, AAC, MP3
πŸ“Ί Screen Screen sharing & presentation mode
πŸ”„ Async Fully asynchronous β€” built for Fibers & Swoole
πŸ” Crypto DH key exchange, encryption params, signaling
πŸ“‘ Events Stream, connection, upgrade, frame, and signaling event streams
⚑ Performance Rust-powered native code, minimal overhead
🧩 Ecosystem First-class LiveProto integration

πŸ—οΈ Architecture

sequenceDiagram
    autonumber
    participant P as PHP (Application Layer)
    participant R as Rust Extension (Bridge)
    participant C as NTgCalls (C++ Core)

    Note over P, C: Initialization Phase
    P->>R: Instantiate TgcallsClient
    R-->>P: Return Native Instance Pointer
    P->>R: Enable Events (Initialize Buffer/FD)
    
    rect rgb(240, 248, 255)
        Note right of P: Request/Response Flow
        P->>R: Call Method (Payload)
        R->>C: FFI Bridge (WebRTC/Boost)
        C-->>R: Return Result
        R-->>P: Return Data to PHP
    end

    rect rgb(245, 245, 245)
        Note right of P: Async Event Handling (FD Mechanism)
        C->>R: Event Callback (Direct)
        R->>R: Write to File Descriptor (FD)
        loop Async Consumption
            P->>R: Read from FD Buffer
            R-->>P: Dispatch Event Object
        end
    end
Loading

πŸ“¦ Installation

Prerequisites

  • PHP 8.4+
  • Rust 1.96.0+

Using Composer

Note

Install the framework in your project :

composer require taknone/phptgcalls

Note

Then install the native extension :

cd vendor/taknone/phptgcalls/ext

sudo bash install.sh

From Source

Note

Clone the repository and install dependencies :

git clone https://github.com/TakNone/phptgcalls.git
cd phptgcalls

composer install

Extension Only

Note

If you already have the repository :

git clone https://github.com/TakNone/phptgcalls.git
cd phptgcalls/ext

sudo bash install.sh

πŸš€ Quick Start

<?php

require_once 'vendor/autoload.php';

use Tak\Liveproto\Utils\Settings;

use Tak\Liveproto\Network\Client;

use Tak\Tgcalls\Driver;

use Tak\Asyncio\Loop;

Loop::queue(static function() : void {
	try {
		$settings = new Settings();
		$settings->setApiId(21724);
		$settings->setApiHash('3e0cb5efcd52300aec5994fdfc5bdc16');
		$client = new Client('phptgcalls','sqlite',$settings);
		$client->start(false);

		$tgcalls = new Driver(client : $client,chat_id : -100123456789);
		$params_json = $tgcalls->create();

		// Both MTProto and TgCalls clients are ready to use... //
	} finally {
		$client->stop();
	}
});

Loop::run();

?>

πŸ”— Integration with LiveProto

TgCalls is designed to work hand-in-hand with LiveProto :

LiveProto TgCalls
MTProto connection & auth VoIP call management
phone.joinGroupCall() TgcallsClient.create() + connect()
DH config retrieval TgcallsClient.init_exchange()
Signaling relay TgcallsClient.send_signaling_data()

Important

LiveProto handles the MTProto layer ( Telegram API ), while TgCalls handles the WebRTC/VoIP layer. Together, they provide a complete Telegram calling solution in PHP


πŸ§ͺ Examples


🀝 Contributing

We love contributions ! Here's how to get started :

  1. Fork this repository
  2. Create a feature branch : git checkout -b feature/amazing-feature
  3. Commit your changes : git commit -m 'Add amazing feature'
  4. Push to the branch : git push origin feature/amazing-feature
  5. Open a Pull Request

πŸ’¬ Community

Join the phptgcalls ecosystem :

Platform Link
πŸ’¬ Telegram Chat PhpTgCallsChat
πŸ› Bug Reports GitHub Issues

πŸ“œ License

This project is licensed under the MIT License

About

A high-performance PHP extension for Telegram voice and video calls , built with Rust and powered by ntgcalls

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors