Такая проблема обычно возникает при входе в пассивный режим. Либо попробуйте активный, либо проверьте что весь диапазон портов для пассивного режима открыт.
Любая софтверная атс (asterisk, freeswitch) умеет бриджевать любое количество ног в один разговор. Подавать команды АТС может любой процесс, любой скрипт (хоть на РНР). Готового решения для вашей конкретной задачи нет, но все инструменты уже давно написаны и используются.
В каждом современном ЯП имеется библиотека для юнит-тестов. Используйте её, ведь совершенно не важно как именно код будет использоваться (вызываться пользователем). Есть метод, он делает то-то. Вот тест.
Странный вопрос.
В Российской Федерации основанием для расчетов между юридическими лицами является договор. Типовой он нужен просто для галочки, разумеется, чтобы было основание платить. Никто и читать его особо не будет, разве что кто-то из вас не соберется в суд) Вот, например